1. 程式人生 > >Python用 smtplib在阿里雲伺服器傳送郵件(1ni)

Python用 smtplib在阿里雲伺服器傳送郵件(1ni)

差點被這個郵件搞哭了,坑真的太多了!!!

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()