寫在最前面
相信看到535報錯的同學代碼編寫方面都沒有問題,只是不明白為什么填寫了帳號密碼后還是報535錯誤,這里我以163郵箱為例,並使用Python講解怎么解決535問題
代碼如下:
import smtplib from email.mime.text import MIMEText from email.utils import formataddr msg = MIMEText('老大,我今天需要請假。', 'plain', 'utf-8') # 發送內容 msg['From'] = formataddr(["frank", 'xxxxxxx@163.com']) # 發件人 msg['To'] = formataddr(["jack", 'xxxx@qq.com']) # 收件人 msg['Subject'] = "【請回復】" # 主題 server = smtplib.SMTP("smtp.163.com", 25) # SMTP服務 server.login("xxxxxx@163.com", "密碼") # 郵箱用戶名和密碼 把密碼改成授權碼就行了 server.sendmail('xxxxxx@163.com', ['xxxxxxxx@qq.com', ], msg.as_string()) # 發送者和接收者 server.quit()
運行后:
Traceback (most recent call last): File "mail.py", line 18, in <module> smtp.login( username, password ) File "/usr/lib64/python2.6/smtplib.py", line 589, in login raise SMTPAuthenticationError(code, resp) smtplib.SMTPAuthenticationError: (535, 'Error: authentication failed')
解決辦法:
調用163郵箱服務器來發送郵件,我們需要開啟POP3/SMTP服務,這時163郵件會讓我們設置客戶端授權碼,這個授權碼替代上面代碼部分的passwd
即可成功發送郵件