用 Python 傳送電子郵件

Najwa Riyaz 2021年10月12日 2021年7月12日
用 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 會話。

這是一個演示通過 Gmail SMTP 伺服器傳送郵件的示例。

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 Mail,請提供以下 SMTP 詳細資訊:
SMTP_SERVER = "smtp.mail.yahoo.com"
SMTP_PORT = 587

此外,在執行程式碼之前生成雅虎應用程式密碼。參考下面的連結。

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

  • 同樣,如果你希望使用任何其他郵件提供商,請使用其各自的 SMTP 伺服器詳細資訊和先決條件。