【问题标题】:I can send emails, but not replies with smtplib and GMail我可以发送电子邮件,但不能使用 smtplib 和 GMail 回复
【发布时间】: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 &lt;foobar@gmail.com&gt;""&lt;foobar@gmail.com&gt;""&lt;hardcoded-address@gmail.com&gt;" 发送它,但这些都不起作用)。

【问题讨论】:

  • 根据the doc,第四个参数是“mail_options”,或“在 MAIL FROM 命令中使用的 ESMTP 选项列表(例如 8bitmime)。”这不是您传入的内容。
  • @Robᵩ 我应该为mail_options 传递什么,我应该在哪里传递我的选项?抱歉,我没有使用 SMTP 和邮件协议的经验。
  • 您可能不应该在 mail_options 中传递任何内容。可能的值列表在这里:en.wikipedia.org/wiki/Extended_SMTP#Extensions,但您可能不需要它们中的任何一个。

标签: python email smtp gmail


【解决方案1】:

选项不能作为参数传递,但无论出于何种原因,它们实际上属于消息。这是一个例子:

msg = MIMEMultipart("mixed")
body = MIMEMultipart("alternative")
body.attach(MIMEText(text, "plain"))
body.attach(MIMEText("<html>" + text + "</html>", "html"))
msg.attach(body)
msg["In-Reply-To"] = params["Message-ID"]
msg["Message-ID"] = email.utils.make_msgid()
msg["References"] = params["Message-ID"]
msg["Subject"] = "Re: " + params["Subject"]
destination = msg["To"] = params["Reply-To"] or params["From"]
smtpserver.sendmail(
    "<foobar@gmail.com>",
    destination,
    msg.as_string()
)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-04
    • 1970-01-01
    • 2015-09-07
    • 2021-04-26
    • 1970-01-01
    • 1970-01-01
    • 2020-09-19
    • 2011-09-17
    相关资源
    最近更新 更多