Python用 smtplib在阿里雲伺服器傳送郵件(1ni)
阿新 • • 發佈:2018-12-31
差點被這個郵件搞哭了,坑真的太多了!!!
1.要記得開啟163郵箱的服務
具體方法 設定=》左下角的客戶端授權密碼(那時候就要開啟了,會讓你輸入密碼,這個密碼不能和登入的密碼相同
程式碼裡也是這個客戶端密碼,不是登入密碼)
2.你的IP可能被禁了!!!
一開始試了很多的程式碼,都是報錯(554 SPM)說我傳送了垃圾郵件,後來我就在內容裡面加了很多字,也查了很多方法,都沒用,哈哈哈哈,然後真的受不了了,就去找網易的客服了,說實話有點感動,她告訴我 是我的IP被禁了,是一個叫spamhaus反垃圾組織把我IP拉黑了,一臉懵逼,因為是學校裡的,可能被別人給搞砸了吧,具體我也不清楚,被禁的話,自行百度就好。
3.後來我想,我還有伺服器啊!反正最終程式碼都是上伺服器的,所以就上伺服器試試,伺服器IP總不會被禁了吧?
後來把程式碼貼進去,還是沒用,因為阿里不支援
server = smtplib.SMTP(smtp_server, 25)
跑的時候就沒反應,也沒報錯(很不友好)
只需要 改成 server = smtplib.SMTP_SSL(smtp_server, 465)
這樣就可以了
4.的確是傳送了,但是沒有啊!!!我都沒提示,去163看,說我已經發送了
去QQ郵箱看,他把我的郵件檢測為垃圾郵件!!!
可能是字數太少,太simple了,後來字數多一點就OK了
上程式碼
# *_*coding:utf-8 *_* import smtplib from email.mime.text import MIMEText msg = MIMEText('hello', 'plain', 'utf-8') # 傳送郵箱地址 from_addr = '
[email protected]' # 郵箱授權碼,非登陸密碼 password = 'xxxx' # 收件箱地址 to_addr = '[email protected]' # smtp伺服器 smtp_server = 'smtp.163.com' # 傳送郵箱地址 msg['From'] = from_addr # 收件箱地址 msg['To'] = to_addr # 主題 msg['Subject'] = 'Hey' server = smtplib.SMTP_SSL(smtp_server, 465) # 假如不是阿里的話 # server = smtplib.SMTP(smtp_server, 25) server.login(from_addr, password) server.sendmail(from_addr, [to_addr], msg.as_string()) server.quit()