Pythonでメールを送信する:email, smtplib

Pythonでemailパッケージとsmtplibモジュールを使い、メールを送信する方法について説明します。

email を使ってメッセージを作成する

emailパッケージには、メールを扱うために使われる各モジュールが含まれています。今回は、email.mime.textモジュールにある MIMETextクラスを使って、シンプルなテキストメッセージを作成します。

まず、コンストラクタに本文を渡して、message オブジェクトを生成します。

この message オブジェクトに対して Subject, From, To の各キーに文字列の値を設定します。それぞれ、送信者、宛先を表します。

smtplib を使ってメールを送信する

作成したメッセージを送信するためには、email だけではなく、他のモジュールが必要になります。

ここでは smtplib を使ってメールを送信します。SMTP サーバーについては、すでに用意されていることを前提としています。

安全な通信を利用するために、SMTP_SSL クラスを使います。引数は SMTP サーバーのホスト名です。この例では仮の名前になっていますので、実際のものに置き換えてください。

この段階で、サーバーに接続できなければエラーが発生します。成功した場合は、タイムアウトする前に login() メソッドでログインしてからメールを送信します。ログイン時には ID とパスワードを渡す必要があります。

次に sendmail() メソッドを呼び出してメッセージを送信します。1つ目と2つ目の引数はそれぞれ送信者と宛先のアドレスです。最後の引数には、先ほど作成した message オブジェクトの as_string() メソッドの戻り値を渡します。

この一連の操作はサーバーとの接続が要求されますので、例えばインタラクティブモードで直接タイプしていると、タイムアウトする前に実行するのは難しくなります。先に関数として定義しておくか、スクリプトファイルに記述するなど、すぐに実行できる状態になっていることが必要です。


Welcome to UX MILK

UX MILKはより良いサービスやプロダクトを作りたい人のためのメディアです。

このサイトについて