用 Python 傳送電子郵件
Najwa Riyaz
2021年10月12日
要使用 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 伺服器詳細資訊和先決條件。