Pythonを使用してReturn-Pathを確実に強制します
質問
私はPythonジュニアなので、それを念頭に置いてください。 Pythonスクリプトでは、送信者のアドレスとは異なるReturn-Pathアドレスを設定する必要があります。 (GmailをSMTPサーバーとして使用しています。)
私はこの質問について多くの検索をしましたが、たくさんの「答え」を見つけましたが、解決策はありませんでした。このリンクを試しました mimeメッセージのpython sendmailでリターンパスを設定します しかし、それは私のためにまったく機能していません。 「to」を変更することができます。メール受信者が見ているアドレスですが、「返信」をクリックすると、電子メールアドレスの送信に戻ります。
これは私が書こうとしている機能です。別のリターンパスを強制する必要があることを除いて、それは十分にうまく機能します。
#!/usr/bin/python
import smtplib
import os
from email.MIMEMultipart import MIMEMultipart
from email.MIMEBase import MIMEBase
from email.MIMEText import MIMEText
from email.Utils import COMMASPACE, formatdate
from email import Encoders
import sap_mailserverdata as sf
def send_mail(sent_to, subject, body_text, sent_from_addr='', sent_from_name='', files=[], cc=[], bcc=[]):
"""Send emails with or without attachments."""
assert type(sent_to)==list
assert type(files)==list
assert type(cc)==list
assert type(bcc)==list
message = MIMEMultipart()
message['From'] = sent_from_addr
message['To'] = COMMASPACE.join(sent_to)
message['Date'] = formatdate(localtime=True)
message['Subject'] = subject
message['Cc'] = COMMASPACE.join(cc)
message.preamble = 'You need a MIME enabled mail reader to see this message.\n'
message.attach(MIMEText(body_text, 'html'))
for f in files:
part = MIMEBase('application', 'octet-stream')
part.set_payload(open(f, 'rb').read())
Encoders.encode_base64(part)
part.add_header('Content-Disposition', 'attachment; filename="%s"' % os.path.basename(f))
message.attach(part)
addresses = []
for x in sent_to:
addresses.append(x)
for x in cc:
addresses.append(x)
for x in bcc:
addresses.append(x)
mail_server = smtplib.SMTP(sf.server, sf.server_port)
mail_server.ehlo()
mail_server.set_debuglevel(1)
mail_server.starttls()
mail_server.login(sf.username, sf.password)
mail_server.sendmail(sent_from_addr, addresses, message.as_string())
mail_server.quit()
この関数には、Return-Pathへの別のReplyを確実に指定できるように、私は何が欠けていますか?
解決
返信パスとリターンパスは、2つの異なる獣です。を参照してください RFC.
あなたは次のように返信することができます:
msg['reply-to'] = 'smith@acme.com'
リターンパスは、MTAによってバウンスを受け取るアドレスに設定されます。サーバー管理者によって制御されているため、Googleで作業しない限り、これがあなたの管理下にあるとは思いません。
ほとんどの場合、「返信」の後です。実際に戻りパスを変更する必要がある場合は、使用している特定のMTAに対してこれを行う方法については、制御下にあるSMTPサーバーを使用する必要があります。道。
所属していません StackOverflow