使用Python的smtplib可以發送QQ郵件,代碼如下
#!/usr/bin/python3
import smtplib
from email.mime.text import MIMEText
from email.header import Headersender = '111@qq.com' # 發送郵箱
receivers = ['222@qq.com'] # 接收郵箱
auth_code = "abc" # 授權碼message = MIMEText('Python發送郵件', 'plain', 'utf-8')
message['From'] = Header("Sender<%s>" % sender) # 發送者
message['To'] = Header("Receiver<%s>" % receivers[0]) # 接收者subject = 'Python SMTP 郵件測試'
message['Subject'] = Header(subject, 'utf-8')try:server = smtplib.SMTP_SSL('smtp.qq.com', 465)server.login(sender, auth_code)server.sendmail(sender, receivers, message.as_string())print("郵件發送成功")server.close()
except smtplib.SMTPException:print("Error: 無法發送郵件")
發送郵件服務器要用465端口,否則如下錯誤:
login的密碼不是郵箱登錄密碼,而是授權碼,需要在QQ郵箱設置-賬號里獲取。
否則會報如下錯誤:
SMTPServerDisconnected: Connection unexpectedly closed
SSLError: [SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:1002)
發送消息的From和To要用標準格式,否則報錯:
SMTPDataError: (550, b'The "From" header is missing or invalid. Please follow RFC5322, RFC2047, RFC822 standard protocol. https://service.mail.qq.com/detail/124/995.')
參考
https://wx.mail.qq.com/list/readtemplate?name=app_intro.html#/agreement/authorizationCode
https://help.mail.qq.com/detail/0/994
https://docs.python.org/zh-cn/3/library/netdata.html
https://docs.python.org/zh-cn/3/library/smtplib.html