最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python如何實(shí)現(xiàn)自動(dòng)發(fā)送郵件

 更新時(shí)間:2021年11月22日 11:04:16   作者:俊紅的數(shù)據(jù)分析之路  
對(duì)于一些每天需要發(fā)的報(bào)表或者是需要一次發(fā)送多份的報(bào)表,我們可以考慮借助Python來(lái)自動(dòng)發(fā)送郵件。本文主要介紹了如何利用Python實(shí)現(xiàn)自動(dòng)發(fā)送郵件,感興趣的小伙伴可以了解一下

自動(dòng)發(fā)送郵件

我們把報(bào)表做出來(lái)以后一般都是需要發(fā)給別人查看,對(duì)于一些每天需要發(fā)的報(bào)表或者是需要一次發(fā)送多份的報(bào)表,這個(gè)時(shí)候可以考慮借助Python來(lái)自動(dòng)發(fā)送郵件。

使用郵箱的第一步

一般我們?cè)谑褂肣Q郵箱、163郵箱、126郵箱等這些比較常用的郵箱時(shí),只需要輸入賬號(hào)和密碼就可以。但是在使用手機(jī)端的企業(yè)郵箱的時(shí)候,一般都需要配置一下,常規(guī)的配置界面如下所示:

就是除了在輸入賬號(hào)密碼以外,還需要輸入一個(gè)服務(wù)器鏈接地址,這個(gè)地址每個(gè)公司都會(huì)不太一樣。

一份郵件的組成

下圖是outlook中發(fā)送一份郵件的界面,主要包含發(fā)件人、收件人、抄送人、主題、正文、附件這幾部分。這也是一般郵件比較通用的組成部分。

如何發(fā)送郵件

在發(fā)送郵件之前首先需要與服務(wù)器進(jìn)行連接,在Python中主要利用smtplib模塊來(lái)建立服務(wù)器連接接、服務(wù)器斷開的工作。

不同郵箱的服務(wù)器鏈接地址不一樣,大家根據(jù)自己使用的郵箱設(shè)置相應(yīng)的服務(wù)器鏈接。下表為常見郵箱對(duì)應(yīng)的服務(wù)器鏈接:

郵箱 服務(wù)器地址
新浪郵箱 smtp.sina.com
搜狐郵箱 smtp.sohu.com
126郵箱 smtp.126.com
139郵箱 smtp.139.com
163網(wǎng)易郵箱 smtp.163.com

在與163郵箱服務(wù)器進(jìn)行連接之前,需要先登陸自己的163郵箱進(jìn)行授權(quán)設(shè)置,授權(quán)碼設(shè)置如下:

點(diǎn)擊設(shè)置中的POP3/SMTP/IMAP,勾選SMTP服務(wù),根據(jù)提是進(jìn)行授權(quán)碼設(shè)置,設(shè)置授權(quán)成功后,在Python中利用授權(quán)碼進(jìn)行登陸,而不是你本來(lái)的郵箱密碼,如果使用本來(lái)的郵箱密碼登陸,會(huì)報(bào)錯(cuò)。

連接設(shè)置好以后就可以使用賬戶密碼進(jìn)行登錄了,登錄成功以后就可以對(duì)郵件內(nèi)容進(jìn)行編輯,編輯完成以后就可以點(diǎn)擊發(fā)送了,發(fā)送完成后斷開服務(wù)器鏈接。

如下展示了發(fā)送一份郵件的簡(jiǎn)短流程代碼:

import smtplib

smtp = smtplib.SMTP()
smtp.connect(host, port)  # 與服務(wù)器進(jìn)行連接
smtp.set_debuglevel(1) #顯示出交互信息
smtp.login(username, password)  # 登陸郵箱
smtp.sendmail(sender, receiver, msg.as_string())  # 發(fā)送郵件
smtp.quit()  # 斷開連接

正式發(fā)送一份郵件

如下以163郵箱為例,展示了發(fā)送一份郵件完整的Python代碼:

import smtplib
from email.mime.multipart import MIMEMultipart 
from email import encoders
from email.header import Header
from email.mime.text import MIMEText
from email.utils import parseaddr, formataddr
from email.mime.application import MIMEApplication

#發(fā)件人郵箱
asender="zhangjunhongdata@163.com"
#收件人郵箱
areceiver="zhangjunhong@163.com"
#抄送人郵箱
acc = 'zhangjunhong@qq.com'
#郵件主題
asubject = '這是一份測(cè)試郵件'  

#發(fā)件人地址
from_addr = "zhangjunhongdata@163.com"
#郵箱密碼(授權(quán)碼)
password="123data"

#郵件設(shè)置
msg = MIMEMultipart()
msg['Subject'] = asubject  
msg['to'] = areceiver  
msg['Cc'] = acc 
msg['from'] =  "張俊紅"

#郵件正文
body = "你好,這是一份測(cè)試郵件"

#添加郵件正文:
msg.attach(MIMEText(body, 'plain', 'utf-8'))

#添加附件
#注意這里的文件路徑是斜杠
xlsxpart = MIMEApplication(open('C:/Users/zhangjunhong/Desktop/這是附件.xlsx', 'rb').read())
xlsxpart.add_header('Content-Disposition', 'attachment', filename='這是附件.xlsx')
msg.attach(xlsxpart)    

#設(shè)置郵箱服務(wù)器地址以及端口
smtp_server ="smtp.163.com"
server = smtplib.SMTP(smtp_server, 25)
server.set_debuglevel(1)

#登陸郵箱
server.login(from_addr, password)

#發(fā)送郵件
server.sendmail(from_addr, areceiver.split(',')+acc.split(','), msg.as_string())

#斷開服務(wù)器鏈接
server.quit()

最后的結(jié)果如下圖:

關(guān)于自動(dòng)發(fā)送郵件還有一些進(jìn)階的內(nèi)容,比如定時(shí)發(fā)送,正文顯示html內(nèi)容等,大家有興趣的可以自行上網(wǎng)搜索學(xué)習(xí)。

批量發(fā)送郵件

如果是需要同時(shí)發(fā)送多份郵件,可以把收件人整理成一個(gè)表格進(jìn)行循環(huán)遍歷,挨個(gè)進(jìn)行發(fā)送。

比如我們現(xiàn)在需要給銷售部門好幾百銷售人員分別發(fā)送本月各自的銷售任務(wù),在發(fā)送郵件的時(shí)候主題需要命名成xxx任務(wù)明細(xì),在正文中的稱呼也需要改成對(duì)應(yīng)的收件人,附件中需要添加各自的任務(wù)明細(xì)表,而且需要抄送給各自的直屬上級(jí)。

根據(jù)上述的需要,我們整理了如下收件人信息相關(guān)的表格df:

姓名 收件人 抄送人
張俊紅1 zhangjunhong11@163.com zhangjunhong@163.com
張俊紅2 zhangjunhong22@163.com zhangjunhong@163.com

只需要寫一個(gè)for循環(huán)去遍歷這個(gè)df表格中的信息,然后就可以分別發(fā)送出去,具體實(shí)現(xiàn)代碼如下:

import smtplib
from email.mime.multipart import MIMEMultipart 
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.application import MIMEApplication

host = "smtp.163.com"
port = 25
username = "zhangjunhong1227@163.com"
password = "123zjh"

smtp = smtplib.SMTP() #聲明一個(gè)鏈接對(duì)象
smtp.connect(host, port)  # 與服務(wù)器進(jìn)行連接
smtp.set_debuglevel(1) #顯示出交互信息
smtp.login(username, password)  # 登陸郵箱

sender = username

for i in zip(df["姓名"],df["收件人"],df["抄送人"]):
    
    receiver = i[1] #收件人
    acc = i[2] #抄送人


    msg = MIMEMultipart() #聲明一個(gè)郵件對(duì)象
    msg['from'] = username #發(fā)件人
    msg['to'] = receiver#收件人
    msg['Cc'] = acc #抄送人
    msg['Subject'] = i[0] + "任務(wù)明細(xì)" #主題

    # 編寫正文
    text = MIMEText(i[0]+"您好,這是您這個(gè)月的任務(wù)明細(xì)",'plain', 'utf-8') 
    msg.attach(text)

    # 添加表格附件
    f = open('C:/Users/zhangjunhong/Desktop/任務(wù)明細(xì)/'+ i[0] + '.xlsx', 'rb').read()
    filepart = MIMEApplication(f)
    filepart.add_header('Content-Disposition','attachment',filename=i[0] + '任務(wù)明細(xì).xlsx') #為附件添加一個(gè)標(biāo)題
    msg.attach(filepart)

    smtp.sendmail(sender, receiver.split(',') + acc.split(','), msg.as_string())  # 發(fā)送郵件
smtp.quit()  # 斷開連接    

通過(guò)運(yùn)行上面的代碼,就可以達(dá)到一次性給表格df中的所有人發(fā)送郵件的需求。

以上就是 Python如何實(shí)現(xiàn)自動(dòng)發(fā)送郵件的詳細(xì)內(nèi)容,更多關(guān)于 Python發(fā)送郵件的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論

上虞市| 云林县| 贵定县| 阳西县| 牙克石市| 玛多县| 石河子市| 新昌县| 无棣县| 鲜城| 邹平县| 大足县| 贵南县| 芦溪县| 自贡市| 北碚区| 息烽县| 通江县| 平远县| 东兴市| 大庆市| 曲周县| 股票| 夏河县| 阳原县| 姚安县| 华池县| 宜良县| 黄石市| 肇州县| 名山县| 固阳县| 宁陵县| 彰武县| 清丰县| 疏勒县| 开平市| 石家庄市| 临沂市| 剑河县| 扎兰屯市|