Python プログラミング

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

こんにちは!シミダイ(@shimidai2100)です。

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を使用した簡易メール送信

こんにちは!シミダイ(@shimidai2100)です。 メールサーバーの「Postfix」のインストールからCUIコマ ...

続きを見る

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

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」にログが出力され、メールが送信されたことが分かります。

$ 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]

 

関連記事

-Python, プログラミング

Copyright© shimidai2100 , 2020 All Rights Reserved.