Web自動化【7】——python 使用QQ郵箱發送郵件,端口號25,465,578,的區別,及錯誤碼535,530的解決辦法

先上代碼,方式一二三分別對應使用smtp不同端口號發送郵件的實現方式。
(1)端口號25:明文傳輸
(2)端口號456,基於SSL協議
(3)端口號578,基於STARTTLS協議
所以實現當時會有所不同,根據不同報錯信息也可以看出來。

方式一:端口號25,明文傳輸

from email.mime.text import MIMEText
from email.header import Header
import smtplib
server = 'smtp.qq.com'
user = '***@qq.com'
pwd = '授權碼'  # 開啓
receiver = '****@qq.com'
subject = 'python email test'
msg = MIMEText('<HTML><H1>today is Friday!</h1></html>', 'html', 'utf-8')
msg['subject'] = Header(subject, 'utf-8')
smtp = smtplib.SMTP()
smtp.connect(server, 25)
smtp.login(user, pwd)
smtp.sendmail(user, receiver, msg.as_string())
smtp.quit()

方式二:端口號456,基於SSL協議

from email.mime.text import MIMEText
from email.header import Header
import smtplib
# xpvwyhxnsrsrbabi
server = 'smtp.qq.com'
user = '***@qq.com'
pwd = '授權碼'  # 開啓
receiver = '***@qq.com'
subject = 'python email test'
msg = MIMEText('<HTML><H1>今天不加班!</hi></html>', 'html', 'utf-8')
msg['subject'] = Header(subject, 'utf-8')
smtp = smtplib.SMTP_SSL(server, 465) 
 # 465端口(SMTPS):465端口是爲SMTPS(SMTP-over-SSL)協議服務開放的
smtp.login(user, pwd)
smtp.sendmail(user, receiver, msg.as_string())

方式三:端口號578,基於STARTTLS協議的 屬於TLS通訊協議

from email.mime.text import MIMEText
from email.header import Header
import smtplib
# xpvwyhxnsrsrbabi
server = 'smtp.qq.com'
user = '***@qq.com'
pwd = '授權碼'  # 開啓
receiver = '****@qq.com'
subject = 'python email test'
msg = MIMEText('<HTML><H1>快下班啦!</hi></html>', 'html', 'utf-8')
msg['subject'] = Header(subject, 'utf-8')
# 方式三:587端口是STARTTLS協議的 屬於TLS通訊協議,命令執行後對原文進行保護
smtp = smtplib.SMTP(server, 587)
smtp.set_debuglevel(0) # 是否爲調試模式。>1即調試模式,表示輸出交互調試信息
smtp.starttls()
smtp.login(user, pwd)
smtp.sendmail(user, receiver, msg.as_string())
smtp.quit()

列舉一些常會遇到的報錯:

常見報錯一:535
報錯535原因就是未將POP3/SMTP服務開啓,並且第三方登錄需要服務開啓獲取的授權碼。

報錯信息:
http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256
解決辦法:
其中報錯有個鏈接:http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256
根據鏈接步驟,打開qq郵箱,點擊設置->賬戶,找到POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服務,開啓IMAP/SMTP服務,然後根據要求使用手機發送到指定號碼,獲取授權碼,
這個授權碼就是你接下來登錄要的密碼,配置完成。
注意:此時需要用授權碼代替郵箱本身的Password。
在這裏插入圖片描述

常見報錯二:530
錯誤原因: 需要一個安全的連接,例如SSL,smtp = smtplib.SMTP()。這個就是上面對應的方式二,不能使用 因此接下來我們會使用SSL的方式去登錄,但是已就需要打開qq郵箱,點擊設置->賬戶,找到POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服務,開啓IMAP/SMTP服務,然後根據要求使用手機發送到指定號碼,獲取授權碼,這個授權碼就是接下來登錄要的密碼,配置完成。

在這裏插入圖片描述

常見報錯三:530 smtplib.SMTPAuthenticationError: (530, b’Must issue a STARTTLS command first.’)
原因是端口問題,不同端口需要不同的實現方式]
(https://blog.csdn.net/qq_23864697/article/details/80183854)

在這裏插入圖片描述

另外具體25,587,465端口區別見以下博文:https://blog.csdn.net/qq_23864697/article/details/80183854
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章