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にメッセージ送信

LINE Notify
LINE NotifyはGitHub,IFTTT,MackerelなどのWebサービスからの通知を、LINEで受信することが出来る便利なサービスです。

まず上記のサイトから、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は有効に使えます。
監視業務の円滑化のためにぜひ利用してみてください。

エージェントへの登録はお済みですか?

今すぐフリーランスになる気がなくても、エージェントへの登録は済ませておくことをお勧めします。理由はストレスや疲労が限界に達してからだと遅いから。

現在の自身のフリーランスとしての価値・単価相場を把握できますし、条件にあった案件をキャッチできるようになるので、いざフリーランスになろうとした際に早期に手が打てます。

エージェント登録は無料なので、今はフリーランスにならなくとも登録だけはしておくべきです。

真っ先に登録すべきエージェントは、圧倒的に多くのクライアントを開拓しているDYMテック。2500社の優良な取引先と、条件交渉力が強く高条件で仕事を紹介してくれるエージェントです。

案件紹介のみでなく、エンジニアとしてのキャリア相談や業界動向のキャッチアップなど、フリーランス対してのサポートも充実していますので、初めてフリーランスに挑戦する方も安心です。

DYMテックの詳細を見る

フリーランスエンジニアの働き方
スポンサーリンク
shigotoswitchをフォローする
しごとスイッチ