Pythonでメールを扱いたい場合には、smtplibを利用します。
この記事では、smtplibについて解説しています。
本記事の内容
- smtplibとは?
- smtplibのシステム要件
- smtplibの動作確認
それでは、上記に沿って解説していきます。
smtplibとは?
smtplibとは、SMTPプロトコルクライアントの機能を備えたモジュールのことです。
SMTPを利用すれば、メールの送受信が可能になります。
また、smtplibはPythonの標準ライブラリです。
標準ライブラリということは、追加でライブラリをインストールする必要がありません。
つまり、Pythonには標準でメール送受信の機能が備わっているのです。
以上、smtplibの説明でした。
次は、smtplibのシステム要件を確認します。
smtplibのシステム要件
以下は、Pythonの公式開発サイクルです。
バージョン | リリース日 | サポート期限 |
3.6 | 2016年12月23日 | 2021年12月 |
3.7 | 2018年6月27日 | 2023年6月 |
3.8 | 2019年10月14日 | 2024年10月 |
3.9 | 2020年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の動作確認について説明しました。