30

Pythonを使用してメールを送信するための次のスクリプトがあります

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import os

FROMADDR = "myaddr@server.com"
PASSWORD = 'foo'

TOADDR   = ['toaddr1@server.com', 'toaddr2@server.com']
CCADDR   = ['ccaddr1@server.com', 'ccaddr2@server.com']

# Create message container - the correct MIME type is multipart/alternative.
msg            = MIMEMultipart('alternative')
msg['Subject'] = 'Test'
msg['From']    = FROMADDR
msg['To']      = ', '.join(TOADDR)
msg['Cc']      = ', '.join(CCADDR)

# Create the body of the message (an HTML version).
text = """Hi  this is the body
"""

# Record the MIME types of both parts - text/plain and text/html.
body = MIMEText(text, 'plain')

# Attach parts into message container.
msg.attach(body)

# Send the message via local SMTP server.
s = smtplib.SMTP('server.com', 587)
s.set_debuglevel(1)
s.ehlo()
s.starttls()
s.login(FROMADDR, PASSWORD)
s.sendmail(FROMADDR, TOADDR, msg.as_string())
s.quit()

スクリプトを使用すると、メールがとの両方toaddr1に配信され、メールがまったく受信されないことがわかります。toadd2ccaddr1ccaddr2

興味深いことに、 と が受信したメールを確認するtoaddr1toadd2、 CC にccaddr1とが存在することがわかります。ccaddr2

スクリプトに誤りはありませんか?最初は、これはメール サーバーの問題ではないかと考えていました。Gmail で試してみましたが、同じ結果が得られました。つまり、現在のメール サーバーのアカウントであろうと、CC の Gmail アカウントであろうと、受信者はメールを受信しません。 CC フィールド

4

3 に答える 3

50

メールを送信するときは、CCADDR を TOADDR に入れる必要があると思います。

s.sendmail(FROMADDR, TOADDR+CCADDR, msg.as_string())

メッセージにアドレスを正しく追加していますが、封筒にも cc アドレスが必要です。

ドキュメントから:

: from_addr パラメーターと to_addrs パラメーターは、トランスポート エージェントが使用するメッセージ エンベロープを構築するために使用されます。

于 2012-04-02T10:48:57.073 に答える
5

メッセージで CC エントリを指定しましたが、エンベロープでは指定しませんでした。メッセージが CC および BCC エントリにも送信されるようにするのは、あなたの仕事です。

于 2012-04-02T10:48:45.560 に答える