40

我正在使用 Python 电子邮件和 smtplib 从 Python 发送电子邮件。我正在使用我的 Gmail 凭据通过 Gmail SMTP 服务器执行此操作。这很好用,但是我想指定一个与Reply-to地址不同的电子邮件地址from,以便回复发送到单独的地址(非 Gmail。)

我试过创建这样的reply to参数:

   msg = MIMEMultipart()

   msg['From'] = "email@gmail.com"
   msg['To'] = to
   msg['Subject'] = subject
   msg['Reply-to'] = "email2@domain2.com"

但这不起作用。在 Python 文档中找不到这方面的任何信息。

谢谢。

4

5 回答 5

50

这是我的看法。我认为应该明确设置“回复”标题。可能的原因是它不如“主题”、“收件人”和“发件人”等标题使用得少。

python
Python 2.6.6 (r266:84292, May 10 2011, 11:07:28) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> MAIL_SERVER = 'smtp.domain.com'
>>> TO_ADDRESS = 'you@gmail.com'
>>> FROM_ADDRESS = 'email@domain.com'
>>> REPLY_TO_ADDRESS = 'email2@domain2.com'
>>> import smtplib
>>> import email.mime.multipart
>>> msg = email.mime.multipart.MIMEMultipart()
>>> msg['to'] = TO_ADDRESS
>>> msg['from'] = FROM_ADDRESS
>>> msg['subject'] = 'testing reply-to header'
>>> msg.add_header('reply-to', REPLY_TO_ADDRESS)
>>> server = smtplib.SMTP(MAIL_SERVER)
>>> server.sendmail(msg['from'], [msg['to']], msg.as_string())
{}
于 2011-05-19T17:49:06.063 回答
20

我有同样的问题,我所要做的就是将标题设置为小写,如下所示:

msg['reply-to'] = "email2@domain2.com"
于 2014-07-16T15:19:49.553 回答
3

对于 2021 年的 Python3,我建议使用以下方法来构建消息:

from email.message import EmailMessage
from email.utils import formataddr

msg = EmailMessage()
msg['Subject'] = "Message Subject"
msg['From'] = formataddr(("Sender's Name", "email@gmail.com"))
msg['Reply-To'] = formataddr(("Name of Reply2", "email2@domain2.com"))
msg['To'] = formataddr(("John Smith", "john.smith@gmail.com"))
msg.set_content("""\
<html>
  <head></head>
  <body>
    <p>A simple test email</p>
  </body>
</html>
""", subtype='html')

然后为了发送消息,我将以下内容用于在端口 587 上使用 StartTLS 的邮件服务器:

from smtplib import SMTP
from ssl import create_default_context as context

with SMTP('smtp.domain.com', 587) as server:
    server.starttls(context=context())
    server.login('email@domain.com', password)
    server.send_message(msg)
于 2021-05-04T16:12:11.600 回答
2

正如 Jonathon Reinhart 指出的那样,“To”需要大写:

msg['Reply-To'] = "email2@domain2.com"
于 2020-08-07T20:47:04.560 回答
0

只有这对我有用:

msg['In-Reply-To'] = "email2@domain2.com"

看这里:[使用 python 3.4 回复电子邮件] by urban 1

于 2020-03-27T22:57:16.973 回答