pythonでファイルを添付してmailを送信するコード。yahooのSMTPを使用しています。yahooのメールアドレスを持っていることが前提です。
send_mail.py
import ssl
from smtplib import SMTP, SMTP_SSL
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders
from email.utils import formatdate
def create_MIME(to_email, message, f_path=None, f_name=""):
# MIMETextを作成
msg = MIMEMultipart()
msg['Subject'] = "送信テスト"
msg['From'] = "xxxxxx@yahoo.co.jp"
msg['To'] = to_email
msg.attach(MIMEText(message, 'plain', 'utf-8'))
# 添付ファイルの設定
if f_path:
with open(f_path, 'rb') as fp:
# MIMEBaseを使用してバイナリとして読み込み
part = MIMEBase('video', 'mp4')
part.set_payload(fp.read())
# ベース64にエンコード
encoders.encode_base64(part)
# ヘッダーの追加
part.add_header(
'Content-Disposition',
f'attachment; filename={f_name}'
)
msg.attach(part)
return msg
def send_email(msg):
account = "xxxxxx@yahoo.co.jp"
password = "abcdefg"
host = 'smtp.mail.yahoo.co.jp'
port = 465
# サーバを指定する
context = ssl.create_default_context()
server = SMTP_SSL(host, port, context=context)
# ログイン処理
server.login(account, password)
# メールを送信する
server.send_message(msg)
# 閉じる
server.quit()
# メール送信先
to_email = "yyyyyy@gmail.com"
message = "添付ファイル無し"
# MIME形式の作成(添付ファイル無し)
mime = create_MIME(to_email, message)
# メールの送信
send_email(mime)
# 添付ファイル
f_path = './mp4/test.mp4'
f_name = 'test.mp4'
message = "添付ファイル有り"
# MIME形式の作成(添付ファイル有り)
mime = create_MIME(to_email, message, f_path, f_name)
# メールの送信
send_email(mime)
- 9行 :
MIMEの作成関数に宣言 - 12行: メールの題名。今回は
"送信テスト"と入力 - 13行: yahooのメールアドレスを入力
- 14行: 送信先のメールアドレスを入力
- 18行: 添付ファイルの処理
- 21行: 今回はMP4(動画)を添付した場合のコードです。ファイルに合わせて調整して下さい
- 24行: 添付したファイルを
ベース64にエンコード - 26行:
ヘッダーの追加
- 33行: メール送信関数
- 34行: 13行と同じyahooのメールアドレスを入力。
- 35行: メールのパスワードを入力
- 36行: SMTPサーバ。今回はyahooなので
'smtp.mail.yahoo.co.jp' - 37行: ポート番号
- 53行: 送信先アドレス。今回はGmailに送信しています。
- まずは添付資料無しで送信
- 55行: 本文を
"添付ファイル無し"と指定 - 57行:
create_MIME()関数を添付ファイル無しで実行 - 59行: 添付ファイル無しで送信されます。
- 以降添付ファイル有りで送信
- 62行: 添付ファイルのPath。ファイルは実行フォルダの下mp4ファルダに
'test.mp4'として保存 - 63行: ファイルの名前
- 64行: 本文を
"添付ファイル有り"と指定 - 66行:
create_MIME()関数を添付ファイル有りで実行 - 68行: 添付ファイル有りで送信
このコードを pyhton3 send_mail.py で実行。メールが送信先に送られます。
