Search code examples
pythonemailsmtplib

Setting different reply-to message in Python email/smtplib


I am using Python email and smtplib to send an email from Python. I am doing this via the Gmail SMTP server using my Gmail credentials. This works fine, however I would like to specify a Reply-to email address different from the from address, so that replies go to a separate address (non-Gmail.)

I have tried creating a reply to parameter like this:

   msg = MIMEMultipart()

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

But this doesn't work. Can't find any info on this in the Python docs.


Solution

  • Here's my take on it. I believe that the "Reply-To" header should be set explicitly. The likely reason is that it's less commonly used than headers such as "Subject", "To", and "From".

    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.example'
    >>> TO_ADDRESS = 'you@gmail.com'
    >>> FROM_ADDRESS = 'email@domain.example'
    >>> REPLY_TO_ADDRESS = 'email2@domain2.example'
    >>> 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())
    {}