メール送信
・Gmail 送信
・Yahoo!メール 送信
Gmail 送信例 Python 3.6 以上 (HTML テキスト・添付ファイル 対応) 3.2 以上 3.6 未満 3.2 未満
Yahoo!メール 送信例 Python 3.6 以上 (HTML テキスト・添付ファイル 対応) 3.2 以上 3.6 未満 3.2 未満
(smtplib【SMTP プロトコルクライアント】)
メモ
- メール送信の概要については、smtplib【SMTP プロトコルクライアント】参照
- 各種メール送信例
- Gmail 送信
Python 3.6 以上対応 (HTML テキスト・添付ファイル 対応)
Python 3.2 以上 3.6 未満対応
Python 3.2 未満対応 - Yahoo!メール 送信
Python 3.6 以上対応 (HTML テキスト・添付ファイル 対応)
Python 3.2 以上 3.6 未満対応
Python 3.2 未満対応
- Gmail 送信
- 外部リンク
Gmail送信
メモ
- Gmail送信
- Gmail の仕様
項目 値 Google アカウントの設定 [セキュリティ] で下記設定
・[アプリ パスワード]を作成し使用
または
・[2 段階認証プロセス] をオフ
・[安全性の低いアプリのアクセス] をオン (デフォルト:オフ)
(セキュリティが下がるので、専用アカウントの使用がベター)送信メール(SMTP)サーバ smtp.gmail.com SSL のポート番号 465 TLS / STARTTLS のポート番号 587 メールアドレス ~@gmail.com ユーザー名 メールアドレス パスワード Gmail のパスワード または アプリ パスワード (上記で設定) SSL なし接続のサポートサービス
(2019/12 現在)8bitmime
chunking
enhancedstatuscodes
pipelining
size:35882577
smtputf8
starttls・SSL 接続のサポートサービス
・starttls()【TLS 開始】後のサポートサービス
(2019/12 現在)上記のサービス (starttls を除く) に加え
auth:" LOGIN PLAIN XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER XOAUTH"
- Gmail の仕様
- 例
- Python 3.6 以上対応 (HTML テキスト・添付ファイル 対応)
- Python 3.2 以上 3.6 未満対応
- Python 3.2 未満対応
- Python のバージョンによる違いについては、smtplib【SMTP プロトコルクライアント】参照
- Python 3.6 以上対応 (HTML テキスト・添付ファイル 対応)
- 関連
例
Gmail 送信 (Python 3.6 以上)
# from send_gmail_3_6 import Gmail
class Gmail(user, password)
userユーザメールアドレス
passwordパスワード
# メール送信 (TLS) メソッド
Gmail.send(subject, body, to, cc=None, bcc=None, *, files=[], debug=0)
戻り値拒否されたアドレスの辞書 (詳細は、send_message()【メール送信 (Message オブジェクト)】の戻り値 参照)
送信不可:空以外の辞書の返却 または 送信元にメール通知
subject件名
body本文 (<html> で始まっていれば、HTML テキスト)
toTO (複数:リスト・タプル)
ccCC (複数:リスト・タプル)
bccBCC (複数:リスト・タプル)
files (キーワード引数)添付ファイル (リスト・タプル)
debug (キーワード引数)デバッグ出力レベル
0~2 (set_debuglevel()【デバッグ出力レベル設定】と同等)
8 (トレース)
例外各種例外
※:SSL 送信は省略
# send_gmail_3_6.py
# Gmail 送信 (Python 3.6 以上)
import mimetypes
import os
import smtplib
from email.message import EmailMessage
# Gmail 送信 クラス
class Gmail:
# コンストラクタ
def __init__(self, user, password):
self._user = user
self._password = password
# メール送信 (TLS)
def send(self, subject, body, to, cc=None, bcc=None, *, files=[], debug=0):
GMAIL_SMTP_SERVER = "smtp.gmail.com"
GMAIL_PORT = 587
DEBUG_TRACE = 8
trace = True if (debug == DEBUG_TRACE) else False
if trace:
print("開始:Gmail 送信 (TLS)")
# メール作成
msg = EmailMessage()
# ヘッダー情報 設定
msg['Subject'] = subject
msg['From'] = self._user
msg['To'] = to
if cc is not None:
msg['Cc'] = cc
if bcc is not None:
msg['Bcc'] = bcc
if trace:
print("Subject:", msg['Subject'])
print("From:", msg['From'])
print("To:", msg['To'])
print("Cc:", msg['Cc'])
print("Bcc:", msg['Bcc'])
# 本文設定
html = body.startswith("<html>")
msg.set_content(body)
if html:
msg.set_type("text/html")
# 添付ファイル追加
if trace:
print("FILES:", len(files))
for file in files:
ctype, encoding = mimetypes.guess_type(file)
if (ctype is None) or (encoding is not None):
ctype = 'application/octet-stream'
maintype, subtype = ctype.split('/', 1)
with open(file, 'rb') as fp:
msg.add_attachment(
fp.read(),
maintype=maintype,
subtype=subtype,
filename=os.path.basename(file))
if trace:
print(f" {file} ({maintype}/{subtype})")
# メール送信 (TLS)
with smtplib.SMTP(GMAIL_SMTP_SERVER, GMAIL_PORT) as smtp:
# デバッグ出力レベル設定
if not trace:
smtp.set_debuglevel(debug)
# TLS 開始
smtp.ehlo()
if trace:
print("Support:", smtp.esmtp_features)
smtp.starttls()
# ログイン
smtp.ehlo()
smtp.login(self._user, self._password)
# メール送信
result = smtp.send_message(msg)
# with文により QUITコマンド自動発行
if trace:
if len(result) != 0:
print(result)
print("終了:Gmail 送信 (TLS)\n")
return result
from send_gmail_3_6 import Gmail
gmail_user = "~@gmail.com"
gmail_password = "~"
# Gmail 送信 オブジェクト生成
gmail = Gmail(gmail_user, gmail_password)
# プレーンテキスト
subject = "件名:Gmail プレーンテキスト"
body = "本文1\n本文2\n本文3"
to = "~"
gmail.send(subject, body, to)
# HTMLテキスト・TO (複数)
subject = "件名:Gmail HTMLテキスト TO (複数)"
body = "<html>本文1<br><b style='color: red;'>本文2</b><br>本文3</html>"
to = ("~", "~")
gmail.send(subject, body, to)
# プレーンテキスト・添付ファイル
subject = "件名:Gmail プレーンテキスト・添付ファイル"
body = "本文1\n本文2\n本文3"
to = "~"
files = ("./mail/text1.txt", "./mail/text2.txt", "./Data/test.zip")
gmail.send(subject, body, to, files=files)
Gmail 送信 (Python 3.2 以上 3.6 未満)
import smtplib
from email.message import EmailMessage
GMAIL_SERVER = "smtp.gmail.com"
GMAIL_PORT = 587
GMAIL_PORT_SSL = 465
# メッセージ作成 Python 3.2 以上
# to・cc・bcc:文字列 (複数:カンマ区切り)・リスト
def create_msg_32(subject, body, from_, to, cc=None, bcc=None):
msg = EmailMessage()
msg['Subject'] = subject
msg['From'] = from_
msg['To'] = to
msg['Cc'] = cc
msg['Bcc'] = bcc
msg.set_content(body)
return msg
# Gmail 送信 (TLS) Python 3.2 以上
def send_gmail_tls_32(user, password, msg, debug=False):
print("開始:Gmail 送信 (TLS)")
print("SUBJECT:", msg['Subject'])
print("FROM:", msg['From'])
print("TO:", msg['To'])
print("CC:", msg['Cc'])
print("BCC:", msg['Bcc'])
with smtplib.SMTP(GMAIL_SERVER, GMAIL_PORT) as smtp:
# デバッグ出力レベル設定
smtp.set_debuglevel(debug)
# TLS 開始
smtp.ehlo() # 省略可
smtp.starttls()
# ログイン
smtp.ehlo() # 省略可
smtp.login(user, password)
# メール送信
result = smtp.send_message(msg)
# with文により QUITコマンド自動発行
print("終了:Gmail 送信 (TLS)")
return result
# Gmail 送信 (SSL) Python 3.2 以上
def send_gmail_ssl_32(user, password, msg, debug=False):
print("開始:Gmail 送信 (SSL)")
print("SUBJECT:", msg['Subject'])
print("FROM:", msg['From'])
print("TO:", msg['To'])
print("CC:", msg['Cc'])
print("BCC:", msg['Bcc'])
with smtplib.SMTP_SSL(GMAIL_SERVER, GMAIL_PORT_SSL) as smtp:
# デバッグ出力レベル設定
smtp.set_debuglevel(debug)
# ログイン
smtp.ehlo() # 省略可
smtp.login(user, password)
# メール送信
result = smtp.send_message(msg)
# with文により QUITコマンド自動発行
print("終了:Gmail 送信 (SSL)")
return result
if __name__ == "__main__":
gmail_user = "~@gmail.com"
gmail_password = "~"
# TO・CC・BCC:文字列 (複数:カンマ区切り)・リスト
to = ”~”
cc = [ ”~”, ”~” ]
bcc = "~, ~"
body = "本文1\n本文2\n本文3"
# Gmail 送信 (TLS)
subject = "件名:Gmail (TLS) by Python 3.2 以上"
msg = create_msg_32(subject, body, gmail_user, to, cc, bcc)
send_gmail_tls_32(gmail_user, gmail_password, msg)
# Gmail 送信 (SSL)
subject = "件名:Gmail (SSL) by Python 3.2 以上"
msg = create_msg_32(subject, body, gmail_user, to, cc, bcc)
send_gmail_ssl_32(gmail_user, gmail_password, msg)
【出力例】
開始:Gmail 送信 (TLS)
SUBJECT: 件名:Gmail (TLS) by Python 3.2 以上
FROM: ~
TO: ~
CC: ~, ~
BCC: ~, ~
終了:Gmail 送信 (TLS)
開始:Gmail 送信 (SSL)
SUBJECT: 件名:Gmail (SSL) by Python 3.2 以上
FROM: ~
TO: ~
CC: ~, ~
BCC: ~, ~
終了:Gmail 送信 (SSL)
Gmail 送信 (Python 3.2 未満)
import smtplib
from email.mime.text import MIMEText
import copy
GMAIL_SERVER = "smtp.gmail.com"
GMAIL_PORT = 587
GMAIL_PORT_SSL = 465
# メッセージ作成 Python 3.2 未満
# to・cc・bcc:文字列 (複数:カンマ区切り)
def create_msg_31(subject, body, from_, to, cc=None, bcc=None):
msg = MIMEText(body)
msg['Subject'] = subject
msg['From'] = from_
msg['To'] = to
msg['Cc'] = cc
msg['Bcc'] = bcc
return msg
# Gmail 送信 (TLS) Python 3.2 未満
def send_gmail_tls_31(user, password, msg, debug=False):
print("開始:Gmail 送信 (TLS)")
print("SUBJECT:", msg['Subject'])
print("FROM:", msg['From'])
print("TO:", msg['To'])
print("CC:", msg['Cc'])
print("BCC:", msg['Bcc'])
# 接続
smtp = smtplib.SMTP(GMAIL_SERVER, GMAIL_PORT)
# デバッグ出力レベル設定
smtp.set_debuglevel(debug)
# TLS 開始
smtp.ehlo() # 省略可
smtp.starttls()
# ログイン
smtp.ehlo() # 省略可
smtp.login(user, password)
# メール送信
list_to = msg['To'].split(",")
if msg['Cc'] is not None:
list_to += msg['Cc'].split(",")
if msg['Bcc'] is not None:
list_to += msg['Bcc'].split(",")
msg_copy = copy.copy(msg)
del msg_copy['Bcc']
result = smtp.sendmail(msg['From'], list_to, msg_copy.as_string())
# 切断
smtp.quit()
print("終了:Gmail 送信 (TLS)")
return result
# Gmail 送信 (SSL) Python 3.2 未満
def send_gmail_ssl_31(user, password, msg, debug=False):
print("開始:Gmail 送信 (SSL)")
print("SUBJECT:", msg['Subject'])
print("FROM:", msg['From'])
print("TO:", msg['To'])
print("CC:", msg['Cc'])
print("BCC:", msg['Bcc'])
# 接続
smtp = smtplib.SMTP_SSL(GMAIL_SERVER, GMAIL_PORT_SSL)
# デバッグ出力レベル設定
smtp.set_debuglevel(debug)
# ログイン
smtp.ehlo() # 省略可
smtp.login(user, password)
# 送信先編集
list_to = msg['To'].split(",")
if msg['Cc'] is not None:
list_to += msg['Cc'].split(",")
if msg['Bcc'] is not None:
list_to += msg['Bcc'].split(",")
msg_copy = copy.copy(msg)
del msg_copy['Bcc']
# メール送信
result = smtp.sendmail(msg['From'], list_to, msg_copy.as_string())
# 切断
smtp.quit()
print("終了:Gmail 送信 (SSL)")
return result
if __name__ == "__main__":
gmail_user = "~@gmail.com"
gmail_password = "~"
to = "~"
cc = "~,~"
bcc = "~,~"
body = "本文1\n本文2\n本文3"
# Gmail 送信 (TLS)
subject = "件名:Gmail (TLS) by Python 3.2 未満"
msg = create_msg_31(subject, body, gmail_user, to, cc, bcc)
send_gmail_tls_31(gmail_user, gmail_password, msg)
# Gmail 送信 (SSL)
subject = "件名:Gmail (SSL) by Python 3.2 未満"
msg = create_msg_31(subject, body, gmail_user, to, cc, bcc)
send_gmail_ssl_31(gmail_user, gmail_password, msg)
【出力例】
開始:Gmail 送信 (TLS)
SUBJECT: 件名:Gmail (TLS) by Python 3.2 未満
FROM: ~
TO: ~
CC: ~,~
BCC: ~,~
終了:Gmail 送信 (TLS)
開始:Gmail 送信 (SSL)
SUBJECT: 件名:Gmail (SSL) by Python 3.2 未満
FROM: ~
TO: ~
CC: ~,~
BCC: ~,~
終了:Gmail 送信 (SSL)
Yahoo!メール送信
メモ
- Yahoo!メール送信
- Yahoo!メール の仕様
項目 値 メール設定 [IMAP/POP/SMTPアクセスとメール転送] で下記設定
[Yahoo! JAPAN公式サービス以外からのアクセスも有効にする] をオン
[SMTP] を有効にする (デフォルト)送信メール(SMTP)サーバ smtp.mail.yahoo.co.jp ポート番号 (SSL) 465 (推奨) ポート番号 587 メールアドレス ~@yahoo.co.jp ユーザー名 メールアドレスの @ より前の部分 パスワード Yahoo! JAPAN IDのパスワード サポートサービス
(2019/12 現在)auth:" LOGIN PLAIN XYMCOOKIE XYMYCONNECT"
pipelining
8bitmime
- Yahoo!メール の仕様
- 例
- Python 3.6 以上対応 (HTML テキスト・添付ファイル 対応)
- Python 3.2 以上 3.6 未満対応
- Python 3.2 未満対応
- Python のバージョンによる違いについては、smtplib【SMTP プロトコルクライアント】参照
- Python 3.6 以上対応 (HTML テキスト・添付ファイル 対応)
- 関連
例
Yahoo! メール 送信 (Python 3.6 以上)
# from send_yahoomail_jp_3_6 import YahooMailJp
class YahooMailJp(user, password)
userユーザ名 (@yahoo.co.jp より前)
passwordパスワード
# メール送信 (SSL) メソッド
YahooMailJp.send(subject, body, to, cc=None, bcc=None, *, files=[], debug=0)
戻り値拒否されたアドレスの辞書 (詳細は、send_message()【メール送信 (Message オブジェクト)】の戻り値 参照)
送信不可:空以外の辞書の返却 または 送信元にメール通知
subject件名
body本文 (<html> で始まっていれば、HTML テキスト)
toTO (複数:リスト・タプル)
ccCC (複数:リスト・タプル)
bccBCC (複数:リスト・タプル)
files (キーワード引数)添付ファイル (リスト・タプル)
debug (キーワード引数)デバッグ出力レベル
0~2 (set_debuglevel()【デバッグ出力レベル設定】と同等)
8 (トレース)
例外各種例外
# send_yahoomail_jp_3_6.py
# Yahoo!メール 送信 (Python 3.6 以上)
import mimetypes
import os
import smtplib
from email.message import EmailMessage
# Yahoo!メール 送信 クラス
class YahooMailJp:
# コンストラクタ
def __init__(self, user, password):
self._user = user
self._password = password
# メール送信 (SSL)
def send(self, subject, body, to, cc=None, bcc=None, *, files=[], debug=0):
YAHOO_SMTP_SERVER = "smtp.mail.yahoo.co.jp"
YAHOO_PORT_SSL = 465
YAHOO_MAIL_SUFFIX = "@yahoo.co.jp"
DEBUG_TRACE = 8
trace = True if (debug == DEBUG_TRACE) else False
if trace:
print("開始:Yahoo!メール 送信 (SSL)")
# メール作成
msg = EmailMessage()
# ヘッダー情報 設定
msg['Subject'] = subject
msg['From'] = self._user + YAHOO_MAIL_SUFFIX
msg['To'] = to
if cc is not None:
msg['Cc'] = cc
if bcc is not None:
msg['Bcc'] = bcc
if trace:
print("Subject:", msg['Subject'])
print("From:", msg['From'])
print("To:", msg['To'])
print("Cc:", msg['Cc'])
print("Bcc:", msg['Bcc'])
# 本文設定
html = body.startswith("<html>")
msg.set_content(body)
if html:
msg.set_type("text/html")
# 添付ファイル追加
if trace:
print("FILES:", len(files))
for file in files:
ctype, encoding = mimetypes.guess_type(file)
if (ctype is None) or (encoding is not None):
ctype = 'application/octet-stream'
maintype, subtype = ctype.split('/', 1)
with open(file, 'rb') as fp:
msg.add_attachment(
fp.read(),
maintype=maintype,
subtype=subtype,
filename=os.path.basename(file))
if trace:
print(f" {file} ({maintype}/{subtype})")
# メール送信 (SSL)
with smtplib.SMTP_SSL(YAHOO_SMTP_SERVER, YAHOO_PORT_SSL) as smtp:
# デバッグ出力レベル設定
if not trace:
smtp.set_debuglevel(debug)
# ログイン
smtp.ehlo()
if trace:
print("Support:", smtp.esmtp_features)
smtp.login(self._user, self._password)
# メール送信
result = smtp.send_message(msg)
# with文により QUITコマンド自動発行
if trace:
if len(result) != 0:
print(result)
print("終了:Yahoo!メール 送信 (SSL)\n")
return result
from send_yahoomail_jp_3_6 import YahooMailJp
yahoo_user = "~" # @yahoo.co.jp 省略
yahoo_password = "~"
# Yahoo!メール 送信 オブジェクト生成
yahoo_mail = YahooMailJp(yahoo_user, yahoo_password)
# プレーンテキスト
subject = "件名:Yahoo!メール プレーンテキスト"
body = "本文1\n本文2\n本文3"
to = "~"
yahoo_mail.send(subject, body, to)
# HTMLテキスト・TO (複数)
subject = "件名:Yahoo!メール HTMLテキスト TO (複数)"
body = "<html>本文1<br><b style='color: red;'>本文2</b><br>本文3</html>"
to = ("~", "~")
yahoo_mail.send(subject, body, to)
# プレーンテキスト・添付ファイル
subject = "件名:Yahoo!メール プレーンテキスト・添付ファイル"
body = "本文1\n本文2\n本文3"
to = "~"
files = ("./mail/text1.txt", "./mail/text2.txt", "./Data/test.zip")
yahoo_mail.send(subject, body, to, files=files)
Yahoo! メール 送信 (Python 3.2 以上 3.6 未満)
import smtplib
from email.message import EmailMessage
YAHOO_SERVER = "smtp.mail.yahoo.co.jp"
YAHOO_PORT = 587
YAHOO_PORT_SSL = 465
# メッセージ作成 Python 3.2 以上
# to・cc・bcc:文字列 (複数:カンマ区切り)・リスト
def create_msg_32(subject, body, from_, to, cc=None, bcc=None):
msg = EmailMessage()
msg['Subject'] = subject
msg['From'] = from_
msg['To'] = to
msg['Cc'] = cc
msg['Bcc'] = bcc
msg.set_content(body)
return msg
# Yahoo!メール 送信 (SSL) Python 3.2 以上
def send_yahoo_ssl_32(user, password, msg, debug=False):
print("開始:Yahoo!メール 送信 (SSL)")
print("SUBJECT:", msg['Subject'])
print("FROM:", msg['From'])
print("TO:", msg['To'])
print("CC:", msg['Cc'])
print("BCC:", msg['Bcc'])
with smtplib.SMTP_SSL(YAHOO_SERVER, YAHOO_PORT_SSL) as smtp:
# デバッグ出力レベル設定
smtp.set_debuglevel(debug)
# ログイン
smtp.ehlo() # 省略可
smtp.login(user, password)
# メール送信
result = smtp.send_message(msg)
# with文により QUITコマンド自動発行
print("終了:Yahoo!メール 送信 (SSL)")
return result
# Yahoo!メール 送信 Python 3.2 以上
def send_yahoo_32(user, password, msg, debug=False):
print("開始:Yahoo!メール 送信")
print("SUBJECT:", msg['Subject'])
print("FROM:", msg['From'])
print("TO:", msg['To'])
print("CC:", msg['Cc'])
print("BCC:", msg['Bcc'])
with smtplib.SMTP(YAHOO_SERVER, YAHOO_PORT) as smtp:
# デバッグ出力レベル設定
smtp.set_debuglevel(debug)
# ログイン
smtp.ehlo() # 省略可
smtp.login(user, password)
# メール送信
result = smtp.send_message(msg)
# with文により QUITコマンド自動発行
print("終了:Yahoo!メール 送信")
return result
if __name__ == "__main__":
yahoo_user = "~"
yahoo_mail = "~@yahoo.co.jp"
yahoo_password = "~"
# TO・CC・BCC:文字列 (複数:カンマ区切り)・リスト
to = "~"
cc = [ "~", "~" ]
bcc = "~,~"
body = "本文1\n本文2\n本文3"
# Yahoo!メール 送信 (SSL) 推奨
subject = "件名:Yahoo!メール (SSL) by Python 3.2 以上"
msg = create_msg_32(subject, body, yahoo_mail, to, cc, bcc)
send_yahoo_ssl_32(yahoo_user, yahoo_password, msg)
# Yahoo!メール 送信
subject = "件名:Yahoo!メール by Python 3.2 以上"
msg = create_msg_32(subject, body, yahoo_mail, to, cc, bcc)
send_yahoo_32(yahoo_user, yahoo_password, msg)
【出力例】
開始:Yahoo!メール 送信 (SSL)
SUBJECT: 件名:Yahoo!メール (SSL) by Python 3.2 以上
FROM: ~
TO: ~
CC: ~, ~
BCC: ~, ~
終了:Yahoo!メール 送信 (SSL)
開始:Yahoo!メール 送信
SUBJECT: 件名:Yahoo!メール by Python 3.2 以上
FROM: ~
TO: ~
CC: ~, ~
BCC: ~, ~
終了:Yahoo!メール 送信
Yahoo! メール 送信 (Python 3.2 未満)
import smtplib
from email.mime.text import MIMEText
import copy
YAHOO_SERVER = "smtp.mail.yahoo.co.jp"
YAHOO_PORT = 587
YAHOO_PORT_SSL = 465
# メッセージ作成 Python 3.2 未満
# to・cc・bcc:文字列 (複数:カンマ区切り)
def create_msg_31(subject, body, from_, to, cc=None, bcc=None):
msg = MIMEText(body)
msg['Subject'] = subject
msg['From'] = from_
msg['To'] = to
msg['Cc'] = cc
msg['Bcc'] = bcc
return msg
# Yahoo!メール 送信 (SSL) Python 3.2 未満
def send_yahoo_ssl_31(user, password, msg, debug=False):
print("開始:Yahoo!メール 送信 (SSL)")
print("SUBJECT:", msg['Subject'])
print("FROM:", msg['From'])
print("TO:", msg['To'])
print("CC:", msg['Cc'])
print("BCC:", msg['Bcc'])
# 接続
smtp = smtplib.SMTP_SSL(YAHOO_SERVER, YAHOO_PORT_SSL)
# デバッグ出力レベル設定
smtp.set_debuglevel(debug)
# ログイン
smtp.ehlo() # 省略可
smtp.login(user, password)
# メール送信
list_to = msg['To'].split(",")
if msg['Cc'] is not None:
list_to += msg['Cc'].split(",")
if msg['Bcc'] is not None:
list_to += msg['Bcc'].split(",")
msg_copy = copy.copy(msg)
del msg_copy['Bcc']
result = smtp.sendmail(msg['From'], list_to, msg_copy.as_string())
# 切断
smtp.quit()
print("終了:Yahoo!メール 送信 (SSL)")
return result
# Yahoo!メール 送信 Python 3.2 未満
def send_yahoo_31(user, password, msg, debug=False):
print("開始:Yahoo!メール 送信")
print("SUBJECT:", msg['Subject'])
print("FROM:", msg['From'])
print("TO:", msg['To'])
print("CC:", msg['Cc'])
print("BCC:", msg['Bcc'])
# 接続
smtp = smtplib.SMTP(YAHOO_SERVER, YAHOO_PORT)
# デバッグ出力レベル設定
smtp.set_debuglevel(debug)
# ログイン
smtp.ehlo() # 省略可
smtp.login(user, password)
# 送信先編集
list_to = msg['To'].split(",")
if msg['Cc'] is not None:
list_to += msg['Cc'].split(",")
if msg['Bcc'] is not None:
list_to += msg['Bcc'].split(",")
msg_copy = copy.copy(msg)
del msg_copy['Bcc']
# メール送信
result = smtp.sendmail(msg['From'], list_to, msg_copy.as_string())
# 切断
smtp.quit()
print("終了:Yahoo!メール 送信")
return result
if __name__ == "__main__":
yahoo_user = "~"
yahoo_mail = "~@yahoo.co.jp"
yahoo_password = "~"
# TO・CC・BCC:文字列 (複数:カンマ区切り)
to = yahoo_mail
cc = "~, ~"
bcc = "~, ~"
body = "本文1\n本文2\n本文3"
# Yahoo!メール 送信 (SSL) 推奨
subject = "件名:Yahoo!メール (SSL) by Python 3.2 未満"
msg = create_msg_31(subject, body, yahoo_mail, to, cc, bcc)
send_yahoo_ssl_31(yahoo_user, yahoo_password, msg)
# Yahoo!メール 送信
subject = "件名:Yahoo!メール by Python 3.2 未満"
msg = create_msg_31(subject, body, yahoo_mail, to, cc, bcc)
send_yahoo_31(yahoo_user, yahoo_password, msg)
【出力例】
開始:Yahoo!メール 送信 (SSL)
SUBJECT: 件名:Yahoo!メール (SSL) by Python 3.2 未満
FROM: ~
TO: ~
CC: ~, ~
BCC: ~, ~
終了:Yahoo!メール 送信 (SSL)
開始:Yahoo!メール 送信
SUBJECT: 件名:Yahoo!メール by Python 3.2 未満
FROM: ~
TO: ~
CC: ~, ~
BCC: ~, ~
終了:Yahoo!メール 送信