こんにちは!シミダイ(@shimidai2100)です。
Pythonでメールを送信するための「smtplib」と「email」パッケージを紹介します。
Pythonでメール送る際には基本的にこの2つを使用すれば、基本的なメール送信は可能ですのでしっかりマスターしましょう。
smtplibとは?
「smtplib」とは、SMTPまたはESMTPのリスナーデーモンを備えており、
メールサーバーにメールを送るためのSMTPクライアント・セッション・オブジェクトです。
基本的には、
- メールサーバーとの接続の「SMTP()」
- メール送信の「sendmail()」
- メール接続終了の「quit()」
を覚えておけばメールを送ることができます。
1 2 3 4 5 |
import smtplib smtp = smtplib.SMTP(<メールサーバーホスト>,<接続先ポート>) smtp.sendmail(<Fromアドレス>, <Toアドレス>,送信メール) smtp.quit() |
参考マニュアル:smtplib — SMTP プロトコルクライアント
emailパッケージとは?
「email」パッケージは電子メールとMIME処理のためのパッケージです。
電子メールメッセージを管理ライブラリで、電子メールメッセージの表現や国際化されたヘッダや多方面のユーティリティ
など多くの機能が利用出来ます。
今回は以下のクラスオブジェクトを利用します。
1 2 3 |
from email.mime.text import MIMEText # メールとMIMEオブジェクト from email.header import Header # 国際化ヘッダー from email.utils import formatdate # RFC 2822 形式 |
参考マニュアル:email — 電子メールと MIME 処理のためのパッケージ
smtplibとemailパッケージを使ったメール送信
今回使用するメールサーバーはCentOS上で「Postfix」を使用します。
まだCentOS上でメールサーバーを準備出来ていない場合は以下の手順を参考にしてみてください。
-
-
CentOS/RHELにPostfixをインストール~CUIを使用した簡易メール送信
こんにちは!シミダイ(@shimidai2100)です。 メールサーバーの「Postfix」のインストールからCUIコマンドを利用したメール送信(初期構築確認)の方法を紹介します。 最近はクラウドベン ...
続きを見る
以下が今回用意したサンプルコードになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
import smtplib from email.mime.text import MIMEText from email.header import Header from email.utils import formatdate if __name__ == '__main__': from_address = "test@test-server.com" to_address = "shimidai2100@gmail.com" charset = "UTF-8" subject = "テスト" message = "これはテストです。これはテストです。" msg = MIMEText(message, 'plain', charset) msg['Subject'] = subject msg['From'] = Header(subject, charset) msg['To'] = to_address msg['Date'] = formatdate(localtime=True) smtp = smtplib.SMTP('localhost') smtp.sendmail(from_address, to_address, msg.as_string()) smtp.quit() |
サーバー上で上記のスクリプトを実行してみますと「/var/log/maillog」にログが出力され、メールが送信されたことが分かります。
1 2 3 4 5 6 7 8 |
$ tail 8 /var/log/maillog Sep 6 00:20:20 test-server postfix/smtpd[24663]: connect from localhost[::1] Sep 6 00:20:23 test-server postfix/smtpd[24663]: D2814209C856: client=localhost[::1] Sep 6 00:20:23 test-server postfix/cleanup[24666]: D2814209C856: message-id=<20180905152023.D2814209C856@test-server.localdomain> Sep 6 00:20:23 test-server postfix/qmgr[21934]: D2814209C856: from=<test@test-server.com>, size=585, nrcpt=1 (queue active) Sep 6 00:20:25 test-server postfix/smtp[24667]: D2814209C856: to=<shimidai2100@gmail.com>, relay=gmail-smtp-in.l.google.com[74.125.204.26]:25, delay=1.6, delays=0.01/0.01/0.55/0.99, dsn=2.0.0, status=sent (250 2.0.0 OK 1536160842 s125-v6si2281922pfb.335 - gsmtp) Sep 6 00:20:25 test-server postfix/qmgr[21934]: D2814209C856: removed Sep 6 00:20:28 test-server postfix/smtpd[24663]: disconnect from localhost[::1] |