linux 發送郵箱存在一些問題, 首先 必須使用SSL 加密操作, 端口 必須爲465, 同時使用SSL 的時候還有一些問題, 必須再構造函數中傳入Host(郵箱網站地址) , 終於成功了,
smtp_obj = smtplib.SMTP_SSL(host=HOST)
詳細代碼在下方, 大概說下流程
我使用的是163郵箱 ,首先你得 在163郵箱設置 運行客戶端登陸 發郵箱,
具體操作如下 :
之後再開啓客戶端授權碼
這樣操作就完成了 ,
代碼編寫 :
# 網易163郵箱
HOST = 'smtp.163.com'
# 2> 配置服務的端口,默認的郵件端口是25. 465爲ssl 的端口
PORT = '465'
# 3> 指定發件人和收件人。
FROM = '[email protected]'
# TO = 'xxxxx.@163com'
# 4> 郵件標題
SUBJECT = '爬蟲異常警告'
# 5> 郵件內容
CONTENT = message + "\n" + str(ex)
# 創建郵件發送對象
# 普通的郵件發送形式
#smtp_obj = smtplib.SMTP()
# 數據在傳輸過程中會被加密。
smtp_obj = smtplib.SMTP_SSL(host=HOST)
# 需要進行發件人的認證,授權。
# smtp_obj就是一個第三方客戶端對象
smtp_obj.connect(host=HOST, port=PORT)
# 如果使用第三方客戶端登錄,要求使用授權碼,不能使用真實密碼,防止密碼泄露。
res = smtp_obj.login(user=FROM, password='授權碼')
print('登錄結果:', res)
# 發送郵件
msg = '\n'.join(
['From: {}'.format(FROM), 'To: {}'.format(TO), 'Subject: {}'.format(SUBJECT), '', CONTENT]) # ''此單引號不能少
smtp_obj.sendmail(from_addr=FROM, to_addrs=TO, msg=msg.encode('utf-8'))
這個是通過我整理出來的, 你可能覺得,粘貼複製就能運行,很簡單 卻不知道我開始踩坑的幸苦, 如果可以點個贊吧