【发布时间】:2017-02-03 23:50:14
【问题描述】:
我正在制作一个程序,可以自动回复我 GMail 帐户中的电子邮件。我可以很好地发送邮件,但我似乎无法回复它们。我正在使用smtplib。
这是我用于发送普通邮件的代码(假设foobar@gmail.com 是我的个人电子邮件):
# params contains the header data of the original email.
print smtpserver.sendmail(
"Name Surname <foobar@gmail.com>",
str(params["From"]),
msg
)
这是我用来发送回复的:
print smtpserver.sendmail(
"Giul Mus <giul.mus@gmail.com>",
str(params["From"]),
msg,
{
"In-Reply-To": params["Message-ID"],
"Message-ID": email.utils.make_msgid(),
"References": params["Message-ID"],
"Subject": "Re: " + params["Subject"]
}
)
前者工作正常,在我的邮箱中可以看到它发送的邮件;但是,后者因堆栈跟踪而失败:
Traceback (most recent call last):
File "imap.py", line 65, in <module>
imapprocess(imapdata[0].split(" "))
File "imap.py", line 55, in imapprocess
raise e
smtplib.SMTPSenderRefused: (555, '5.5.2 Syntax error. o2sm22774327wjo.3 - gsmtp', 'Name Surname <foobar@gmail.com>')
为什么会这样?我看到this,问题,但没有任何帮助(我尝试从"Foo Bar <foobar@gmail.com>"、"<foobar@gmail.com>" 或"<hardcoded-address@gmail.com>" 发送它,但这些都不起作用)。
【问题讨论】:
-
根据the doc,第四个参数是“mail_options”,或“在 MAIL FROM 命令中使用的 ESMTP 选项列表(例如 8bitmime)。”这不是您传入的内容。
-
@Robᵩ 我应该为
mail_options传递什么,我应该在哪里传递我的选项?抱歉,我没有使用 SMTP 和邮件协议的经验。 -
您可能不应该在 mail_options 中传递任何内容。可能的值列表在这里:en.wikipedia.org/wiki/Extended_SMTP#Extensions,但您可能不需要它们中的任何一个。