python利用smtp發(fā)送郵件

因為郵件的服務器使用"smtp.qq.com",所以先去qq郵箱賬號設置里開放服務。


image.png
from email.mime.text import MIMEText
import smtplib

# 注意構建MIMEText對象時,第一個參數(shù)就是郵件正文,第二個參數(shù)是MIME的subtype, 'plain'表示存文本,最后參數(shù)一定要用utf-8編碼保證多語言兼容性。
msg = MIMEText('hello, send by Python...', 'plain', 'utf-8')

fromAddr = "your@qq.com"
password = "your 授權碼"
toemail = ['toemail@qq.com']


smtp_server = "smtp.qq.com"
server = smtplib.SMTP_SSL(smtp_server, 465) # 默認端口用465
# 我們用set_debuglevel(1)就可以打印出和SMTP服務器交互的所有信息。SMTP協(xié)議就是簡單的文本命令和響應。
server.set_debuglevel(1)
# login()方法用來登錄SMTP服務器。
server.login(fromAddr, password)
# sendmail()方法就是發(fā)郵件,由于可以一次發(fā)給多個人,所以傳入一個list,郵件正文是一個str,as_string()把MIMEText對象變成str。
server.sendmail(fromAddr, your_email, msg.as_string())
server.quit()

上面代碼執(zhí)行后,會發(fā)現(xiàn)沒有主題。


image.png

這是因為郵件主題、如何顯示發(fā)件人、收件人等信息并不是通過SMTP協(xié)議發(fā)給MTA,而是包含在發(fā)給MTA的文本中的,所以,我們必須把From、To和Subject添加到MIMEText中,才是一封完整的郵件:

from email import encoders
from email.header import Header
from email.mime.text import MIMEText
from email.utils import parseaddr, formataddr

def _format_addr(s):
    name, addr = parseaddr(s)
    return formataddr(Header(name, 'utf-8').encode(), addr)

from_addr = 'your@qq.com'
password = '授權碼'
to_addr = 'toemail@qq.com'

smtp_server = "smtp.qq.com"

msg = MIMEText('hello, send by Python...', 'plain', 'utf-8')
msg['From'] = _format_addr('Python愛好者 <%s>' % from_addr)
msg['To'] = _format_addr('管理員 <%s>' % to_addr)
msg['Subject'] = Header('來自SMTP的問候……', 'utf-8').encode()
server = smtplib.SMTP_SSL(smtp_server, 465) # 默認端口用465
server.set_debuglevel(1)
server.login(from_addr, password)
server.sendmail(from_addr, [to_addr], msg.as_string())
server.quit()

參考鏈接:
https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001386832745198026a685614e7462fb57dbf733cc9f3ad000
如果帶附件的郵件可以參考:
http://blog.csdn.net/zm2714/article/details/7993732

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容