お知らせメールを出したい(python)

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 で実行。メールが送信先に送られます。