Ответ 1
Получение "Недопустимый для заголовка" при отправке с несколькими получателями (с разделителями-запятыми) в одном заголовке было регрессией, которая была исправлена в 2014-08-25.
У меня возникли проблемы с отправкой сообщения на несколько адресов с помощью API Gmail. Я успешно отправил сообщение только по одному адресу, но получаю следующую ошибку, когда я включаю несколько разделенных запятыми адресов в поле 'To'
:
Произошла ошибка: https://www.googleapis.com/gmail/v1/users/me/messages/send?alt=jsonвозвращается "Недопустимый для заголовка" >
Я использую методы CreateMessage
и SendMessage
в этом руководстве по API Gmail:
https://developers.google.com/gmail/api/guides/sending
В этом руководстве указано, что API Gmail требует сообщений, совместимых с RFC-2822. Мне еще не повезло с некоторыми из этих примеров, приведенных в руководстве RFC-2822: https://tools.ietf.org/html/rfc2822#appendix-A
У меня создается впечатление, что "[email protected], [email protected], [email protected]" должен быть допустимой строкой, чтобы перейти в параметр "to" CreateMessage
, но ошибка что я получил от 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 <[email protected]>, [email protected], Who? <[email protected]>'
from_addr = '[email protected]'
message = CreateMessage(from_addr,to_addr,'subject text','message body')
message = SendMessage(gmail_service,'me',message)
Получение "Недопустимый для заголовка" при отправке с несколькими получателями (с разделителями-запятыми) в одном заголовке было регрессией, которая была исправлена в 2014-08-25.
Как отмечает Джеймс в своем комментарии, вы не должны тратить время на использование API Gmail, когда Python имеет отличную документальную поддержку для использования SMTP: модуль email
может составлять сообщение, включая прикрепления, и smtplib
отправляет их. IMHO вы могли использовать API Gmail для того, что работает из коробки, но должны использовать надежные модули из стандартной библиотеки Python, если что-то пойдет не так.
Похоже, вы хотите отправить текстовое сообщение: вот решение, адаптированное из документации модуля email
и Как отправить электронное письмо в Python через SMTPLIB от Mkyong.com:
# Import smtplib for the actual sending function
import smtplib
# Import the email modules we'll need
from email.mime.text import MIMEText
msg = MIMEText('message body')
msg['Subject'] = 'subject text'
msg['From'] = '[email protected]'
msg['To'] = 'Mary Smith <[email protected]>, [email protected], "Who?" <[email protected]>'
# Send the message via Gmail SMTP server.
gmail_user = '[email protected]'
gmail_pwd = 'yourpassword'smtpserver = smtplib.SMTP("smtp.gmail.com",587)
smtpserver = smtplib.SMTP('smtp.gmail.com')smtpserver.ehlo()
smtpserver.starttls()
smtpserver.ehlo
smtpserver.login(gmail_user, gmail_pwd)
smtpserver.send_message(msg)
smtpserver.quit()
См. также Ссылка User.prafts - ошибка "Недопустимый для заголовка"
По-видимому, эта ошибка недавно появилась в API Gmail.