Python でメールを送信する

Najwa Riyaz 2022年4月14日
Python でメールを送信する

Python を使用してメールを送信するには、smtplib ライブラリの次の関数を使用します。

  • SMTP(SMTP_SERVER, SMTP_PORT) - SMTP サーバーと SMTP ポートの詳細に従って SMTP セッションを作成します。
  • starttls() - セキュリティ設定の TLS を開始します。
  • login(SMTP_USERNAME, SMTP_PASSWORD) - 電子メール送信者の認証の詳細を提供します。
  • sendmail(EMAIL_FROM, EMAIL_TO, the_message) - 送信者から受信者にメッセージを送信します。
  • quit() は SMTP セッションを終了します。

これは、GmailSMTP サーバーを介したメールの送信を示す例です。

import smtplib

SMTP_SERVER = "smtp.gmail.com"
SMTP_PORT = 587
SMTP_USERNAME = "sender_username_here@gmail.com"
SMTP_PASSWORD = "sender_password_here"
EMAIL_FROM = "sender_username_here@gmail.com"
EMAIL_TO = "receiver_username_here@gmail.com"
EMAIL_SUBJECT = "Attention:Subject here"
EMAIL_MESSAGE = "The message here"

s = smtplib.SMTP(SMTP_SERVER, SMTP_PORT)
s.starttls()
s.login(SMTP_USERNAME, SMTP_PASSWORD)
message = "Subject: {}\n\n{}".format(EMAIL_SUBJECT, EMAIL_MESSAGE)
s.sendmail(EMAIL_FROM, EMAIL_TO, message)
s.quit()

システムのその時点で構築された接続に従って、出力は次のようになります-

(221, b"2.0.0 closing connection t12sm4676768pfc.133 - gsmtp")

その結果、メールが送信されます。受信者はメッセージを正常に受信します。

注意:

  • Gmail の場合、次の SMTP の詳細を入力します。
SMTP_SERVER = "smtp.gmail.com"
SMTP_PORT = 587

また、コードを実行する前に、Gmail で次の設定を有効にする必要があります。

https://myaccount.google.com/lesssecureapps
  • Yahoo メールの場合、次の SMTP の詳細を入力します。
SMTP_SERVER = "smtp.mail.yahoo.com"
SMTP_PORT = 587

また、コードを実行する前に、Yahoo のアプリパスワードを生成します。以下のリンクを確認してください。

https://help.yahoo.com/kb/generate-separate-password-sln15241.html

  • 同様に、他のメールプロバイダーを使用する場合は、それぞれの SMTP サーバーの詳細と前提条件を使用します。