Python進階(四十六)-Python3實現SMTP傳送郵件詳細教程
Python進階(四十六)-Python3實現SMTP傳送郵件詳細教程
簡介
Python傳送郵件的教程本人在網站搜尋的時候搜尋出來了一大堆,但是都是說了一大堆原理然後就推出了實現程式碼,我測試用給出的程式碼進行傳送郵件時都不成功,後面找了很久才找到原因,這都是沒有一個詳細的環境除錯導致,所以今天特出一個詳細的教程,一步一步從環境除錯到程式碼實現整一個教程,希望對還在苦苦尋找解決方法卻遲遲不能得到有效解決的朋友們一點幫助。
SMTP協議
首先了解SMTP(簡單郵件傳輸協議),郵件傳送代理程式使用SMTP協議來傳送電郵到接收者的郵件伺服器。SMTP協議只能用來傳送郵件,不能用來接收郵件,而大多數的郵件傳送伺服器都是使用SMTP協議。SMTP協議的預設TCP埠號是25。
環境除錯
上面說了是使用SMTP協議傳送的郵件,所以需要先檢視你的發件人郵箱是否有開啟SMTP協議,如沒有,則需要開啟,我測試使用的是163.com的郵箱作為發信人郵箱,在設定中開啟SMTP協議如下圖所示。
測試的前提是你需要開通客戶端授權,開通後會讓你設定密碼,那個密碼要記好,下面的passwd接收的是授權密碼而不是郵箱密碼!否則會出現下圖所示的錯誤提示:
Demo
import smtplib
from email.header import Header
from email.mime.text import MIMEText
# 第三方 SMTP 服務
mail_host = "smtp.163.com" # SMTP伺服器
mail_user = "***" # 使用者名稱
mail_pass = "***" # 授權密碼,非登入密碼
sender = ***@163.com' # 發件人郵箱(最好寫全, 不然會失敗)
receivers = [***@qq.com'] # 接收郵件,可設定為你的QQ郵箱或者其他郵箱
content = '我用Python'
title = '人生苦短' # 郵件主題
def sendEmail():
message = MIMEText(content, 'plain', 'utf-8') # 內容, 格式, 編碼
message['From'] = "{}".format(sender)
message['To'] = ",".join(receivers)
message['Subject'] = title
try:
smtpObj = smtplib.SMTP_SSL(mail_host, 465) # 啟用SSL發信, 埠一般是465
smtpObj.login(mail_user, mail_pass) # 登入驗證
smtpObj.sendmail(sender, receivers, message.as_string()) # 傳送
print("mail has been send successfully.")
except smtplib.SMTPException as e:
print(e)
def send_email2(SMTP_host, from_account, from_passwd, to_account, subject, content):
email_client = smtplib.SMTP(SMTP_host)
email_client.login(from_account, from_passwd)
# create msg
msg = MIMEText(content, 'plain', 'utf-8')
msg['Subject'] = Header(subject, 'utf-8') # subject
msg['From'] = from_account
msg['To'] = to_account
email_client.sendmail(from_account, to_account, msg.as_string())
email_client.quit()
if __name__ == '__main__':
sendEmail()
# receiver = '***'
# send_email2(mail_host, mail_user, mail_pass, receiver, title, content)
剛開始測試時,第一次傳送郵件是成功的,但是後面再次測試時卻出現了提示554,根據給出的網址檢視錯誤程式碼
http://help.163.com/09/1224/17/5RAJ4LMH00753VB8.html
554 DT:SPM 傳送的郵件內容包含了未被許可的資訊,或被系統識別為垃圾郵件。請檢查是否有使用者傳送病毒或者垃圾郵件。如下圖所示:
針對該問題,究竟如何解決,會在下一篇博文中進行展開。若看到的朋友有好的解決方法,還請提出,在此感謝。
附 參考資料
http://www.runoob.com/python/python-email.html
附 電子書福利(免積分下載)
相關文章
- python實現基於smtp傳送郵件Python
- Python SMTP傳送郵件Python
- Python 實現郵件傳送功能(進階)Python
- Python使用SMTP傳送郵件Python
- SMTP操作使用詳解並透過python進行smtp郵件傳送示例Python
- 用Python3傳送郵件詳解Python
- 在Python如何使用SMTP傳送郵件Python
- Jmeter——SMTP Sampler傳送郵件JMeter
- 軟體測試學習教程——Python SMTP傳送郵件Python
- Python3實現自動傳送MySql查詢併傳送郵件PythonMySql
- 配置mail使用SMTP傳送郵件AI
- 利用UTL_SMTP傳送郵件
- python實現傳送郵件Python
- 【python】用SMTP模組傳送帶附件的郵件Python
- python實現郵件的傳送Python
- Python 實現郵件傳送功能(初級)Python
- 一次性解決python smtp 傳送outlook郵件,163郵件,qq郵件等等.Python
- WPForms和 WP Mail SMTP – 最好的WordPress SMTP郵件傳送外掛ORMAI
- 教程-Python例項-傳送郵件功能Python
- oracle 傳送郵件 實現方法Oracle
- Django實現傳送郵件功能Django
- 用Perl實現郵件傳送
- Java實現QQ郵件傳送郵件工具類Java
- python傳送郵件Python
- ThinkPHP_phpmailer使用外部認證SMTP傳送郵件PHPAI
- SMTP協議解讀以及如何使用SMTP協議傳送電子郵件協議
- 使用python傳送郵件和接收郵件Python
- 使用python傳送郵件Python
- 一次郵件傳送協議SMTP問題排查協議
- Xamarin Essentials教程傳送郵件EmailAI
- Android郵件傳送詳解Android
- Android郵件傳送詳解 .Android
- Spring Boot實現傳送QQ郵件Spring Boot
- 郵件傳送
- 傳送郵件
- Linux 上使用 Gmail SMTP 伺服器傳送郵件通知LinuxAI伺服器
- mailx 或telnet 使用指定SMTP伺服器傳送郵件AI伺服器
- python SMTP郵件服務Python