国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python基于SMTP協(xié)議實(shí)現(xiàn)發(fā)送郵件功能詳解

2020-02-15 22:18:03
字體:
供稿:網(wǎng)友

本文實(shí)例講述了Python基于SMTP協(xié)議實(shí)現(xiàn)發(fā)送郵件功能。分享給大家供大家參考,具體如下:

SMTP(Simple Mail Transfer Protocol),即簡單郵件傳輸協(xié)議,它是一組由源地址到目的地址傳送郵件的規(guī)則,由它來控制信件的中轉(zhuǎn)方式。Python內(nèi)置對(duì)SMTP的支持,可以發(fā)送純文本郵件、HTML郵件以及帶附件的郵件。

Python對(duì)SMTP支持有smtplibemail兩個(gè)模塊,email負(fù)責(zé)構(gòu)造郵件,smtplib負(fù)責(zé)發(fā)送郵件。

Python創(chuàng)建SMTP語法如下:

import smtplibsmtpObj = mstplib.SMTP(host,port)

創(chuàng)建具有SSL協(xié)議的SMTP:

import smtplibsmtpObj = mstplib.SMTP_SSL(host,port)

使用SMTP對(duì)象發(fā)送郵件:

# from_addr:發(fā)送者郵箱# to_addrs:接收者郵箱,list# msg:消息體smtpObj.sendmail(from_addr, to_addrs, msg, mail_options=[],         rcpt_options=[])

接下來的示例都是以網(wǎng)易郵箱作為郵箱服務(wù)器來寫的,網(wǎng)易163免費(fèi)郵箱相關(guān)服務(wù)器信息如下:

使用網(wǎng)易郵箱作為發(fā)送者郵箱時(shí)應(yīng)注意,郵箱密碼并非為郵箱的登錄密碼,而是客戶端授權(quán)密碼。

發(fā)送純文本郵件

首先,我們需要構(gòu)造一個(gè)消息體:

from email.header import Headerfrom email.mime.text import MIMEText# 第一個(gè)參數(shù)為郵件正文,第二個(gè)參數(shù)為MINE的subtype,傳入‘plain',最終的MINE就是‘text/plain',最后參數(shù)為編碼msg = MIMEText('hello email','palin','utf-8')def _format_addr(s):  name,addr = parseaddr(s)  return formataddr((Header(name,'utf-8').encode(),addr.encode('utf-8') if isinstance(addr,unicode) else addr))# 發(fā)送者昵稱msg['From'] = _format_addr('發(fā)送者昵稱 <%s>'%from_addr) # 接收者昵稱msg['To'] = _format_addr('接收者昵稱 <%s>'%to_addr)# 標(biāo)題msg['Subject'] = Header('標(biāo)題','utf-8').encode()

此時(shí)就構(gòu)造了一個(gè)簡單的消息體。切記,如果未指定標(biāo)題以及昵稱,并且將其格式化編碼,有可能會(huì)被認(rèn)為是辣雞郵件而導(dǎo)致發(fā)送失敗!!!

以下就是發(fā)送純文本郵件示例的完整代碼:

import smtplibfrom email.header import Headerfrom email.mime.text import MIMETextfrom email.utils import formataddr,parseaddrhost = 'smtp.163.com'port = 25from_addr = 'xxxx@163.com'from_addr_pwd = 'xxxxxx'to_addr = 'xxxx@qq.com'def _format_addr(s):  name,addr = parseaddr(s)  return formataddr((Header(name,'utf-8').encode(),addr.encode('utf-8') if isinstance(addr,unicode) else addr))msg = MIMEText('hello email','palin','utf-8')msg['From'] = _format_addr('發(fā)送者昵稱 <%s>'%from_addr) msg['To'] = _format_addr('接收者昵稱 <%s>'%to_addr)msg['Subject'] = Header('標(biāo)題','utf-8').encode()smtpObj = smtplib.SMTP(host,25)smtpObj.set_debuglevel(1)smtpObj.login(sender,password)smtpObj.sendmail(sender, [receivers], message.as_string())smtoObj.quit()            
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 平凉市| 随州市| 屏南县| 海门市| 宿州市| 额济纳旗| 鹤庆县| 金华市| 新和县| 东乡| 丰台区| 伊春市| 阿鲁科尔沁旗| 隆安县| 孝昌县| 盈江县| 观塘区| 教育| 黔南| 天门市| 卓尼县| 哈密市| 蓝山县| 辽宁省| 延寿县| 壶关县| 广平县| 临澧县| 靖西县| 石泉县| 济宁市| 和林格尔县| 贵德县| 五寨县| 封丘县| 宜章县| 富阳市| 北辰区| 汝南县| 阳高县| 夏河县|