開発したシステムから、通知のためにメールを送りたいときはよくあります。
Pythonでメールを送る方法をまとめました。
合わせて、PythonでLINE通知を送る方法もまとめています。
なおサンプルコードはGMailで送る場合です。
通常の場合
import smtplib
from email.mime.text import MIMEText
from email.utils import formatdate
def create_message(from_addr, to_addr, subject, body):
    msg = MIMEText(body)
    msg['Subject'] = subject
    msg['From'] = from_addr
    msg['To'] = to_addr
    msg['Date'] = formatdate()
    return msg
def send(from_addr, to_addr, msg, password):
    smtpobj = smtplib.SMTP('smtp.gmail.com', 587)
    smtpobj.ehlo()
    smtpobj.starttls()
    smtpobj.ehlo()
    smtpobj.login(from_addr, password)
    smtpobj.sendmail(from_addr, to_addr, msg.as_string())
    smtpobj.close()
    
to_addr = '送信先メールアドレス'
from_addr = '送信元メールアドレス'
subject = '件名'
password = "SMTPサーバーのパスワード"
body = '本文'
msg = create_message(from_addr, to_addr, subject, body)
send(from_addr, to_addr, msg, password)
これで送信できます。
smtplibとは、SMTPサーバーからメールを送信するためのライブラリです。
sendに書かれた処理が、一連の流れです。smtplib.SMTPがSMTPのインスタンスです。SMTPサーバーのURLとポート番号で作ります。
MIMETextは、ボディを作るために使います。
formatdateで現在の日時がスタンプされます。
Djangoの場合
from django.core.mail import send_mail
subject = "件名"
message = "本文"
from_email = "送信元メールアドレス"
recipient_list = [
    "送信先メールアドレス"
]
send_mail(subject, message, from_email, recipient_list)
settings.py
...(中略)... EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' EMAIL_HOST = 'smtp.gmail.com' EMAIL_PORT = 587 EMAIL_HOST_USER = '送信元メールアドレス' EMAIL_HOST_PASSWORD = 'SMTPサーバーのパスワード' EMAIL_USE_TLS = True
Djangoの場合、メールを送る処理は簡潔に書けます。
send_mail関数で一発です。送信先メールアドレスだけ指定の仕方に注意してください。
ただし、settings.pyにいろいろと設定が必要です。
- EMAIL_BACKEND
 以下の様に指定します。
 django.core.mail.backends.smtp.EmailBackend
 Djangoのメール送信デーモンみたいなものです。
- EMAIL_HOST、EMAIL_PORT
 SMTPサーバーのURLとポート番号です。
- EMAIL_HOST_USER、EMAIL_HOST_PASSWORD
 メールアドレスとパスワードを設定します。
- EMAIL_USE_TLS
 GMailの場合はTrueにします。GMailのSMTPサーバーがTLSを使っているからです。
GMailからメール送信する場合の注意点
GMailのサーバーからメールを送ろうとすると、セキュリティの関係でうまく送れない場合があります。
この場合、下記のサイトを参考に「アプリパスワード」というものを作り、その「アプリパスワード」でGMailのサーバーに認証をかけてみてください。システムで使うパスワードがこの「アプリパスワード」です。
Google(gmail)アカウント – アプリパスワードの生成(作成)
https://pc-karuma.net/google-account-generate-app-password/
LINEにメッセージ送信
https://notify-bot.line.me/ja/
まず上記のサイトから、LINEのAPIを叩くためのトークンを取得します。
LINE Notifyというところから通知が来るようになります。
サンプルコードは以下です。
import requests
line_notify_token = '取得したトークン'
line_notify_api = 'https://notify-api.line.me/api/notify'
message = '送りたい文章'
payload = {'message': message}
headers = {'Authorization': 'Bearer ' + line_notify_token}
requests.post(line_notify_api, data=payload, headers=headers)
上記サイトは分かりやすいので、迷うことはないと思います。
まとめ
今回は、Pythonからメールを送る方法、LINEの通知を送る方法について見てきました。
使うサービスにログインさえしていれば、簡単に実装できることが分かったのではないかと思います。
運用時の監視などで、メールやLINEは有効に使えます。
監視業務の円滑化のためにぜひ利用してみてください。


 
			 
			 
			 
			 
			 
			