用smtplib登陸qq郵箱發郵件

網上關於Python發送郵件的文章很多,但是多數的撰寫時間應該是早於Python 2.7.3的,所以都不能直接改帳號和密碼直接登陸主流郵箱的smtp郵件服務器發送郵件。坑趟了不少,許多的版本甚至沒有login登錄的調用,有些使用了fakesocketXXX的貌似廢棄類型,2.7.3已經不支持了,總之就是沒有一篇博文可以不拋異常的把郵件順利的發出去。
html

異常信息過程當中搜了很多,503的返回碼,10060的錯誤代碼,不一而足,最顯著的提示信息是提示須要need secure connection,提到了例如ssl。還好博主以前有過了解ssl和tls這類概念,數據交互雖然沒有搞過,可是Python必定是貼心的封裝無缺的,對咱們開發者應該就是一句調用的問題,具體的過程原理交給網絡安全專家們處理吧。python

總之週六試圖看文檔,惋惜F着Q也打不開文檔頁,只能放放問題了,周天的話,好在文檔順利打開(http://docs.python.org/2/library/smtplib.html#smtplib.SMTP.sendmail)。直接搜ssl,看到了SMTP_SSL這個類型,而後,一切搞定,不費吹灰之力,很有殺雞用牛刀的感受。安全

#-*- encoding: gb2312 -*-
import os, sys
import smtplib
from smtplib import SMTP_SSL
from email.header import Header
from email.mime.text import MIMEText

mailInfo = {
"from":"發信人用戶名@qq.com",
"to":"收信人用戶名@qq.com",
"hostname":"smtp.qq.com",
"username":"帳戶名",
"password":"密碼",
"mailsubject":"郵件標題",
"mailtext":"郵件正文",
"mailencoding":"utf-8"
        }
        
if __name__ == '__main__':
	smtp = SMTP_SSL(mailInfo["hostname"])
	smtp.set_debuglevel(1)
	smtp.ehlo(mailInfo["hostname"])
	smtp.login(mailInfo["username"],mailInfo["password"])
	
	msg = MIMEText(mailInfo["mailtext"],"text",mailInfo["mailencoding"])
	msg["Subject"] = Header(mailInfo["mailsubject"],mailInfo["mailencoding"])
	msg["from"] = mailInfo["from"]
	msg["to"] = mailInfo["to"]
	smtp.sendmail(mailInfo["from"], mailInfo["to"], msg.as_string())
	
	smtp.quit()

郵件卻是順利收到了,郵件正文貌似不正常,有興趣的哥們給看看吧。
服務器

相關文章
相關標籤/搜索