views:

99

answers:

1

Hi,

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", "[email protected]")
#...

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.

A: 

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: [email protected]',
    'From: [email protected]',
    'Subject: test email',
    '',
    'Just testing'
]))
smtp = smtplib.SMTP()
smtp.connect()
smtp.sendmail('[email protected]', '[email protected]', msg.as_string())
MikeyB
This works: "From" address is taken from message and "Return-Path" is taken from "from" argument of smtp.sendmail. Quite odd to me but efficient. Thanks for this, I've never seen an answer about that anywhere.
Pierre
NOTE THAT "msg" could be anything that smtplib.sendmail can accept, it just have to specify a "From" header.
Pierre
It's not really that odd if you know what's going on; Return-Path is a header added by the intermediate (end?) MTAs to reflect the actual sender of the message. Errors/bounces/etc. should go to the Envelope sender, not the address in From:.
MikeyB