4

python の smtplib を使用して、gmail経由で bcc アドレスのメールを送信しようとしています。私はこのコードを使用します:

#imports etc...
fromAddr = sender@origin.com
to = [ recpt1@destinationTo.com ]
cc = [ recpt2@destinationCc.com ]
bcc = [ recpt3@destinationBcc.com, recpt4@destinationBcc.com ]
server = SMTP( "smtp.gmail.com", 587)
#starttls, login, etc..
content = "Hello, this is a message."
msg = "From: %s\r\nTo:%s\r\nCc: %s\r\n\r\n%s" % ( from, to, cc, content )
server.sendmail( fromAddr, to + cc + bcc, msg )
#server.quit() etc...

-> それぞれの受信ボックスに移動すると、[to+cc+bcc] 内のすべてのアドレスに対して同じメッセージが表示されます。これは正しいです。しかし

私がやりたいことは、 gmailの Web インターフェイスについてここで説明されているように、各 bcc アドレスに独自のアドレスを含む bcc フィールドがあることでした。

これが私が達成したいことです:

Cc と受信トレイへ:

To: recpt1@destinationTo.com
From: sender@origin.com
Cc: recpt2@destinationCc.com
(...)

recpt3 受信ボックス:

To: recpt1@destinationTo.com
From: sender@origin.com
Cc: recpt2@destinationCc.com
Bcc: recpt3@destinationBcc.com
(...)

recpt4 受信トレイ:

To: recpt1@destinationTo.com
From: sender@origin.com
Cc: recpt2@destinationCc.com
Bcc: recpt4@destinationBcc.com
(...)

誰かがこれを機能させることができましたか? smtp RFC ドキュメントを調べましたが、何も見つかりませんでした。gmail でそれができる方法がわかりません。

4

1 に答える 1

1

私の推測では、gmail は BCC 受信者ごとに個別の SMTP セッションを行っていると思います。2 つのコメントの間のすべてが関数である場合、次のdosend(fromAddr, toAddr, content, to, cc, bcc=None)ようにすることができます。

dosend(fromAddr, to+cc, content, to, cc)
for t in bcc:
    dosend(fromAddr, t, content, to, cc, t)

これにより、toccアドレスに一度送信されbcc、適切な bcc ヘッダーを使用して、各アドレスに個別に送信されます。dosend が何をするかを明確にするために:fromAddrとのtoAddr引数はエンベロープ用です ( の最初と 2 番目の引数server.sendmail)。、、および (オプションの)引数はto、のヘッダー用です。(あなたのコードは Bcc を追加しません。オプションの引数が提供されている場合は、それを追加する必要があります。)ccbccmsgbcc

(編集: X-Bcc を使用する可能性についてのコメントを削除しました。試してみたところ、上記のように動作します。また、 の説明を修正して明確にしましたdosend。)

于 2011-07-03T17:59:05.363 に答える