pythonheadermimesmtplibreturn-path

Setting Return-Path with Python sendmail for a MIME message


Hi would like to set the "Return-Path" header for a MIME message I send with Python. Basically, I tried something like this :

message = MIMEMultipart()
message.add_header("Return-Path", "something@something.com")
#...

smtplib.SMTP().sendmail(from, to, message.as_string())

The message I receive have its "Return-Path" header set to the same content as the "From" one, even if I explicitly add "Return-Path" header.

How can I set "Return-Path" header for a MIME message sent through smtplib's sendmail in Python ?

Thanks in advance.


Solution

  • Return-Path is set by the SMTP protocol, it's not derived from the message itself. It'll be the Envelope From address is most setups.

    The proper way to accomplish this is:

    msg = email.message_from_string('\n'.join([
        'To: michael@mydomain.com',
        'From: michael@mydomain.com',
        'Subject: test email',
        '',
        'Just testing'
    ]))
    smtp = smtplib.SMTP()
    smtp.connect()
    smtp.sendmail('something@something.com', 'michael@mydomain.com', msg.as_string())