【发布时间】:2020-06-13 06:39:50
【问题描述】:
我在 Python 中使用 Gmail API 并尝试发送包含 Latex 的电子邮件。我知道扩展程序和
附加组件已经使使用 Latex 发送 gmail 消息成为可能。
我的错误不在 python 代码中,而是在电子邮件中。该电子邮件不包含正文和一个附件
,上面写着“noname”,所有其他字段都正确填写。我没有在网上找到与我的问题相似的任何内容。
据我了解,我可能使用了不正确的 mime 类型,或者 Gmail 不了解我在电子邮件正文中输入的内容。
1. 在使用任何乳胶之前,我已验证电子邮件确实以纯文本形式发送。
2. 验证接收者确实收到消息
3. 使用 Latex 发送和接收经过验证的消息,但带有“无名”附件。
4. 尝试过 text/html, application/x-latex, text/plain 但 html 和 latex 都不起作用。
5. json 和凭证文件与everthing 是最新的
6. 我试过 sympy 但也不是很管用:
'''
func = sp.Function('func')
x = sp.Symbol('x')
func = sp.sin(x)
message_text = func
'''
这是我的代码的片段:
为电子邮件创建消息。
参数:
发件人:发件人的电子邮件地址。
收件人:收件人的电子邮件地址。
主题:电子邮件的主题。
message_text:电子邮件的文本。
返回:
一个包含 base64url 编码的电子邮件对象的对象。
'''
def create_message(sender, to, subject, message_text):
message_text = "$x^2"
#message = MIMEText(message_text)
message = MIMEText(message_text, 'application/x-latex')
message['to'] = to
message['from'] = sender
message['subject'] = subject
return {'raw': base64.urlsafe_b64encode(message.as_string().encode()).decode()}#changed as_string() to as_string().encode()).decode
'''
发送电子邮件。
参数: service:授权的 Gmail API 服务实例。 user_id:用户的电子邮件地址。 “我”的特殊价值 可用于指示经过身份验证的用户。 message:要发送的消息。
返回: 已发送消息。
'''
def send_message(service, user_id, message):
try:
message = (service.users().messages().send(userId=user_id, body=message)
.execute())
print ('Message Id: %s' % message['id'])
return message
except errors.HttpError as error:
print ('An error occurred: %s' % error)
'''
【问题讨论】:
-
根据我对您的问题的理解:您想发送一封带有乳胶附件但没有正文的电子邮件。我对吗?如果是这样,对于附件,您需要遵循 Gmail API 的 send an attachment in an email message guide。让我知道我是否正确地尝试在这里做的事情以及它是否对指南有任何帮助。
-
对不起,我的意思是体内有乳胶,没有附件。
-
乳胶是需要附加的文件还是只是一串文本?根据this,正文消息必须是字符串类型,其余消息必须作为媒体附加到电子邮件正文中。
标签: python-3.x gmail gmail-api mime-types mime