メール送信・受信を行うPython標準ライブラリsmtplib

メール送信・受信を行うPython標準モジュールsmtplib プログラミング

Pythonでメールを扱いたい場合には、smtplibを利用します。
この記事では、smtplibについて解説しています。

本記事の内容

  • smtplibとは?
  • smtplibのシステム要件
  • smtplibの動作確認

それでは、上記に沿って解説していきます。

smtplibとは?

smtplibとは、SMTPプロトコルクライアントの機能を備えたモジュールのことです。
SMTPを利用すれば、メールの送受信が可能になります。

また、smtplibはPythonの標準ライブラリです。
標準ライブラリということは、追加でライブラリをインストールする必要がありません。

つまり、Pythonには標準でメール送受信の機能が備わっているのです。

以上、smtplibの説明でした。
次は、smtplibのシステム要件を確認します。

smtplibのシステム要件

以下は、Pythonの公式開発サイクルです。

バージョンリリース日サポート期限
3.62016年12月23日2021年12月
3.72018年6月27日2023年6月
3.82019年10月14日2024年10月
3.92020年10月5日2025年10月

サポートされているPythonであれば、smtplibが利用可能です。
しかし、Python 3.5やPython 2.7でも利用は可能でしょう。

それほど昔から、Pythonには標準で備わっています。
SMTPによるメール送信という基本的な処理なら、本来はそうあるべきです。

でも、そうじゃない言語も存在します。
PHPは、別途で専用ライブラリをインストールする必要があります。

とにかく、Pythonではバージョン問わずに動くということです。
そして、サポートOSに関しては以下を含むクロスプラットフォーム対応です。

  • Windows
  • macOS
  • Linux

標準モジュールである以上、OSを問うことは基本的にはありません。
ただ、一部でOS依存する関数・クラスが存在しています。
そうは言っても、無視できるレベルですけどね。

以上、smtplibのシステム要件を説明しました。
次、smtplibの動作確認を行います。

smtplibの動作確認

動作確認は、サブミッションポート(587番ポート)を利用します。
TCP 25番ポートを利用することは、今の時代は普通にあり得ません。

587番以外だと、465番ポートのケースはあるでしょうね。
あとは、2525番ポートというのも存在します。
このあたりは、歴史的な経緯もあり、複雑です。

今回は、最も一般的な587番ポートで動作確認を行います。
なお、ポート番号毎にコードの記述が異なります。

from email import message 
import smtplib 
smtp_host = 'メールサーバのホスト名' 
smtp_port = 587 
smtp_id = '送信メールのアカウントID' 
smtp_pass = '送信メールのアカウントパスワード' 
from_mail_address = '送信メールアドレス' 
to_mail_address = '送り先メールアドレス' 
msg = message.EmailMessage() 
msg.set_content('メール本文'); 
msg['Subject'] = '件名' 
msg['From'] = from_mail_address
msg['To'] = to_mail_address
server = smtplib.SMTP(smtp_host, smtp_port, timeout=10) 
server.ehlo() 
server.starttls() 
server.ehlo() 
server.login(smtp_id, smtp_pass) 
server.send_message(msg) 
server.quit()

各自で適切な値に置き換えてください。
適切な値を設定したら、上記コードを実行します。

実行してエラーが出なければ、成功です。
送り先メールアドレスでメールを確認しましょう。

メールアドレスが正しいのに、メールを確認できない場合があるかもしれません。
Gmailなら、迷惑フォルダに次のようなメールがあります。

以上、smtplibの動作確認について説明しました。

タイトルとURLをコピーしました