【发布时间】:2014-10-15 18:21:30
【问题描述】:
我在使用 Gmail API 向多个地址发送邮件时遇到了一些问题。我只向一个地址成功发送了一条消息,但是当我在 'To' 字段中包含多个以逗号分隔的地址时出现以下错误:
发生错误:
https://www.googleapis.com/gmail/v1/users/me/messages/send?alt=json 返回“对标头无效”>
我正在使用此 Gmail API 指南中的 CreateMessage 和 SendMessage 方法:
https://developers.google.com/gmail/api/guides/sending
该指南指出,Gmail API 要求邮件符合 RFC-2822。在 RFC-2822 指南中使用其中一些寻址示例时,我再次运气不佳: https://www.rfc-editor.org/rfc/rfc2822#appendix-A
我的印象是 'mary@x.test, jdoe@example.org, one@y.test' 应该是传递给CreateMessage 的'to' 参数的有效字符串,但是错误我从SendMessage 收到的消息让我不相信。
如果您可以重现此问题,或者您对我可能在哪里犯错有任何建议,请告诉我。谢谢!
编辑:这是产生错误的实际代码...
def CreateMessage(sender, to, subject, message_text):
message = MIMEText(message_text)
message['to'] = to
message['from'] = sender
message['subject'] = subject
return {'raw': base64.urlsafe_b64encode(message.as_string())}
def SendMessage(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, error:
print 'An error occurred: %s' % error
def ComposeEmail():
# build gmail_service object using oauth credentials...
to_addr = 'Mary Smith <mary@x.test>, jdoe@example.org, Who? <60one@y.test>'
from_addr = 'me@address.com'
message = CreateMessage(from_addr,to_addr,'subject text','message body')
message = SendMessage(gmail_service,'me',message)
【问题讨论】:
-
您是否尝试过将地址作为列表传递?您能否提供一个适用于一位收件人的代码示例?
-
是的,我尝试将地址作为列表传递,但得到了相同的结果。我编辑了我的帖子并包含了我的代码。如果您希望我提供更多上下文,请告诉我。
-
我今天摆弄了一段时间,因为我还在构建一个需要发送电子邮件的应用程序。我无法在涵盖它的文件中找到任何内容。这让我想知道是否应该这样做,或者我是否应该遍历收件人并一次发送一封电子邮件。如果你弄清楚了,我也会对答案感兴趣。祝你好运。 :)
-
API 刚刚损坏。它处于测试阶段。我花了一整天的时间试图找出我的 to 字段出了什么问题,通读了 rfc2822 文档,没有任何问题。最后切换回 SMTP,一切都很好,世界再次变得美好。可惜了。
标签: python mime gmail-api rfc2822