Fre*_*ete 4 python email gmail-api
我想用Python发送Gmail-API的电子邮件,但我经常收到以下错误:
<HttpError 400 when requesting https://www.googleapis.com/gmail/v1/users/me/messages/send?alt=json returned "Invalid value for .....">
我试图改变一切,并得出结论,当我在电子邮件中包含一个双开关闭角括号('<<'和'>>')(参见示例)时会发生错误.我尝试了将所有内容解析为其他内容,但我认为问题在于我使用'raw'这一事实......但'raw'是Google展示的唯一方式.
还有另一种方法可以通过gmail-api发送电子邮件吗?或者,换句话说,我能做些什么才能在文本中发送带尖括号的电子邮件?
谢谢!
我目前的代码如下(来自Google的示例代码):
import base64
from email.mime.audio import MIMEAudio
from email.mime.base import MIMEBase
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import mimetypes
import os
from apiclient import errors
(...other code...)
SendMessage(service, "me", CreateMessage("me", sender, "<<NOT OK>> " + action, "TEST!"))
(...other code...)
def SendMessage(service, user_id, message):
"""Send an email message.
Args:
service: Authorized Gmail API service instance.
user_id: User's email address. The special value "me"
can be used to indicate the authenticated user.
message: Message to be sent.
Returns:
Sent Message.
"""
try:
# print message
message = service.users().messages().send(userId=user_id, body=message).execute()
print '<mail> Message SEND (Id: %s' % message['id'] + ')'
return message
except errors.HttpError, error:
print 'An error occurred (SendMessage): %s' % error
def CreateMessage(sender, to, subject, message_text):
"""Create a message for an email.
Args:
sender: Email address of the sender.
to: Email address of the receiver.
subject: The subject of the email message.
message_text: The text of the email message.
Returns:
An object containing a base64 encoded email object.
"""
print "<mail> send to: " + to
print "<mail> subject: " + subject
print "<mail> message: " + message_text
message = MIMEText(message_text)
message['to'] = to
message['from'] = sender
message['subject'] = subject
return {'raw': base64.b64encode(message.as_string())}
Run Code Online (Sandbox Code Playgroud)
你需要使用:
base64.urlsafe_b64encode(message.as_string())
使用url-safe base64字母表,否则您的'raw'字段中将包含无效字符.请参阅:https: //developers.google.com/gmail/api/v1/reference/users/messages/send