[Python] smtplibとemailパッケージを使用してメール送信

Pythonでメールを送信するための「smtplib」と「email」パッケージを紹介します。

Pythonでメール送る際には基本的にこの2つを使用すれば、

基本的なメール送信は可能ですのでしっかりマスターしましょう。

目次

smtplibとは?

「smtplib」とは、SMTPまたはESMTPのリスナーデーモンを備えており、

メールサーバーにメールを送るためのSMTPクライアント・セッション・オブジェクトです。

基本的には、

  • メールサーバーとの接続の「SMTP()
  • メール送信の「sendmail()
  • メール接続終了の「quit()

を覚えておけばメールを送ることができます。

import smtplib

smtp = smtplib.SMTP(<メールサーバーホスト>,<接続先ポート>)
smtp.sendmail(<Fromアドレス>, <Toアドレス>,送信メール)
smtp.quit()

参考マニュアル:smtplib — SMTP プロトコルクライアント

emailパッケージとは?

「email」パッケージは電子メールとMIME処理のためのパッケージです。

電子メールメッセージを管理ライブラリで、

電子メールメッセージの表現や国際化されたヘッダや多方面のユーティリティなど多くの機能が利用出来ます。

今回は以下のクラスオブジェクトを利用します。

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を使用した簡易メール送信 メールサーバーの「Postfix」のインストールからCUIコマンドを利用したメール送信(初期構築確認)の方法を紹介します。 最近はクラウドベンダーの「AmazonのAWS」や、 ...

以下が今回用意したサンプルコードになります。

import smtplib

from email.mime.text import MIMEText
from email.header import Header
from email.utils import formatdate

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」にログが出力され、

メールが送信されたことが分かります。

$ 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]
  • システム開発、アプリ開発
  • マッチングアプリ開発
  • インフラ構築支援等、なんでもご相談ください。
よかったらシェアしてね!
  • URLをコピーしました!
目次