Настройка Return-Path с Python sendmail для сообщения MIME

Привет, я хотел бы установить заголовок «Return-Path» для сообщения MIME, которое я отправляю с помощью Python. В принципе, я пробовал что-то вроде этого:

message = MIMEMultipart()
message.add_header("Return-Path", "[email protected]")
#...

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

В сообщении, которое я получаю, заголовок «Return-Path» имеет тот же контент, что и «From», даже если я явно добавляю заголовок «Return-Path».

Как я могу установить заголовок «Return-Path» для сообщения MIME, отправленного через smtplib sendmail в Python?

Заранее спасибо.


person Pierre    schedule 26.07.2010    source источник


Ответы (1)


Return-Path задается протоколом SMTP, а не выводится из самого сообщения. Это будет адрес конверта из большинства настроек.

Правильный способ сделать это:

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())
person MikeyB    schedule 26.07.2010
comment
Это работает: адрес From берется из сообщения, а Return-Path берется из аргумента smtp.sendmail. Довольно странно для меня, но эффективно. Спасибо за это, я никогда не видел ответа на этот вопрос нигде. - person Pierre; 28.07.2010
comment
ЗАМЕТЬТЕ, ЧТО msg может быть чем угодно, что может принять smtplib.sendmail, просто нужно указать заголовок From. - person Pierre; 28.07.2010
comment
На самом деле это не так уж и странно, если вы знаете, что происходит; Return-Path — это заголовок, добавляемый промежуточными (конечными?) MTA, чтобы отразить фактического отправителя сообщения. Ошибки/отказы/и т.д. должен идти к отправителю конверта, а не к адресу в From:. - person MikeyB; 28.07.2010