【问题标题】:Setting different reply-to message in Python email/smtplib在 Python email/smtplib 中设置不同的回复消息
【发布时间】:2011-08-21 18:52:27
【问题描述】:

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

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

   msg = MIMEMultipart()

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

但这不起作用。在 Python 文档中找不到任何相关信息。

谢谢。

【问题讨论】:

  • “发件人”地址也是非 Gmail 地址(与回复地址匹配)。这是问题吗?当你说“这不起作用”时会发生什么?
  • 嗨,我把它改回来了,所以 From 是 Gmail 地址,但它仍然不起作用。所以不要认为这是问题的根源,但谢谢
  • msg['Reply-To'] 对我来说工作得很好。

标签: python email smtplib


【解决方案1】:

对于 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)

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      只有这对我有用:

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

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

      【讨论】:

        【解决方案4】:

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

        msg['reply-to'] = "email2@domain2.com"
        

        【讨论】:

        • 它在 Python 3.6.5 中对我有用。值得注意的是,您可以在其中放置多封电子邮件,当人们回复时,他们会回复所有邮件。
        • 再想一想,接受的答案在比 Python 3.6.5 更多的情况下有效。
        • 它实际上是在 python 3.6.9 上工作的,谢谢伙伴。
        【解决方案5】:

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

        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())
        {}
        

        【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-01-25
        • 2019-01-20
        • 2017-04-02
        • 1970-01-01
        • 2021-10-30
        • 2013-08-13
        • 1970-01-01
        相关资源
        最近更新 更多