Pythonを使用してメールを送信するための次のスクリプトがあります
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import os
FROMADDR = "[email protected]"
PASSWORD = 'foo'
TOADDR = ['[email protected]', '[email protected]']
CCADDR = ['[email protected]', '[email protected]']
# 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
とtoadd2
の両方に配信されていることがわかりますが、ccaddr1
とccaddr2
はメールをまったく受信しません。
興味深いことに、toaddr1
とtoadd2
が受信したメールを確認すると、CCにccaddr1
とccaddr2
が存在することがわかります。
スクリプトにエラーはありますか?当初、これは私のメールサーバーの問題かもしれないと思っていました。 Gmailで試してみたところ、同じ結果が得られました。つまり、現在のメールサーバーのアカウントであるかCCのGmailアカウントであるかに関係なく、[宛先]フィールドのユーザーがメールを正しく受信し、に記載されている正しいアドレスを持っていても、受信者はメールを受信しません。 CCフィールド
メールを送信するときは、CCADDRとTOADDRを一緒に入れる必要があると思います。
s.sendmail(FROMADDR, TOADDR+CCADDR, msg.as_string())
メッセージにアドレスを正しく追加していますが、封筒にもCCアドレスが必要です。
docs から:
注from_addrおよびto_addrsパラメーターは、トランスポートエージェントによって使用されるメッセージエンベロープを構築するために使用されます。
メッセージでCCエントリを指定しましたが、エンベロープでは指定しませんでした。メッセージがCCおよびBCCエントリにも送信されることを確認するのはあなたの仕事です。
TOADDR + CCADDR => TypeErrorで以下のエラーが発生しました:str(「リスト」ではなく)のみをstrに連結できます
私は以下の変更を行いました、そしてそれは私のために働きました。 「To」、「Cc」、「Bcc」に添付ファイル付きのメールを正常に送信します。
toaddr = ['mailid_1','mailid_2']
cc = ['mailid_3','mailid_4']
bcc = ['mailid_5','mailid_6']
subject = 'Email from Python Code'
fromaddr = 'sender_mailid'
message = "\n !! Hello... !!"
msg['From'] = fromaddr
msg['To'] = ', '.join(toaddr)
msg['Cc'] = ', '.join(cc)
msg['Bcc'] = ', '.join(bcc)
msg['Subject'] = subject
s.sendmail(fromaddr, (toaddr+cc+bcc) , message)