MENU

PythonにてメールやLINE通知を送信する方法のまとめ

開発したシステムから、通知のためにメールを送りたいときはよくあります。
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は有効に使えます。
監視業務の円滑化のためにぜひ利用してみてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

管理人のよしぞと申します。
フリーランス業界で働いている管理人が、業界で働く様々な視点からフリーランスエンジニアに挑戦するためのノウハウを掲載。独立を考えている方にとって手助けになるサイトを目指しています。

目次