激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Python如何實現自動發送郵件

Python如何實現自動發送郵件

2022-03-05 14:24俊紅的數據分析之路 Python

對于一些每天需要發的報表或者是需要一次發送多份的報表,我們可以考慮借助Python來自動發送郵件。本文主要介紹了如何利用Python實現自動發送郵件,感興趣的小伙伴可以了解一下

自動發送郵件

我們把報表做出來以后一般都是需要發給別人查看,對于一些每天需要發的報表或者是需要一次發送多份的報表,這個時候可以考慮借助Python來自動發送郵件。

使用郵箱的第一步

一般我們在使用QQ郵箱、163郵箱、126郵箱等這些比較常用的郵箱時,只需要輸入賬號和密碼就可以。但是在使用手機端的企業郵箱的時候,一般都需要配置一下,常規的配置界面如下所示:

Python如何實現自動發送郵件

就是除了在輸入賬號密碼以外,還需要輸入一個服務器鏈接地址,這個地址每個公司都會不太一樣。

 

一份郵件的組成

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

Python如何實現自動發送郵件

如何發送郵件

在發送郵件之前首先需要與服務器進行連接,在Python中主要利用smtplib模塊來建立服務器連接接、服務器斷開的工作。

不同郵箱的服務器鏈接地址不一樣,大家根據自己使用的郵箱設置相應的服務器鏈接。下表為常見郵箱對應的服務器鏈接:

郵箱 服務器地址
新浪郵箱 smtp.sina.com
搜狐郵箱 smtp.sohu.com
126郵箱 smtp.126.com
139郵箱 smtp.139.com
163網易郵箱 smtp.163.com

在與163郵箱服務器進行連接之前,需要先登陸自己的163郵箱進行授權設置,授權碼設置如下:

Python如何實現自動發送郵件

點擊設置中的POP3/SMTP/IMAP,勾選SMTP服務,根據提是進行授權碼設置,設置授權成功后,在Python中利用授權碼進行登陸,而不是你本來的郵箱密碼,如果使用本來的郵箱密碼登陸,會報錯。

連接設置好以后就可以使用賬戶密碼進行登錄了,登錄成功以后就可以對郵件內容進行編輯,編輯完成以后就可以點擊發送了,發送完成后斷開服務器鏈接。

如下展示了發送一份郵件的簡短流程代碼:

import smtplib

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

 

正式發送一份郵件

如下以163郵箱為例,展示了發送一份郵件完整的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

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

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

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

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

#添加郵件正文:
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)    

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

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

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

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

最后的結果如下圖:

Python如何實現自動發送郵件

關于自動發送郵件還有一些進階的內容,比如定時發送,正文顯示html內容等,大家有興趣的可以自行上網搜索學習。

 

批量發送郵件

如果是需要同時發送多份郵件,可以把收件人整理成一個表格進行循環遍歷,挨個進行發送。

比如我們現在需要給銷售部門好幾百銷售人員分別發送本月各自的銷售任務,在發送郵件的時候主題需要命名成xxx任務明細,在正文中的稱呼也需要改成對應的收件人,附件中需要添加各自的任務明細表,而且需要抄送給各自的直屬上級。

根據上述的需要,我們整理了如下收件人信息相關的表格df:

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

只需要寫一個for循環去遍歷這個df表格中的信息,然后就可以分別發送出去,具體實現代碼如下:

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() #聲明一個鏈接對象
smtp.connect(host, port)  # 與服務器進行連接
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() #聲明一個郵件對象
  msg['from'] = username #發件人
  msg['to'] = receiver#收件人
  msg['Cc'] = acc #抄送人
  msg['Subject'] = i[0] + "任務明細" #主題

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

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

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

通過運行上面的代碼,就可以達到一次性給表格df中的所有人發送郵件的需求。

以上就是 Python如何實現自動發送郵件的詳細內容,更多關于 Python發送郵件的資料請關注服務器之家其它相關文章!

原文鏈接:https://blog.csdn.net/junhongzhang/article/details/121436971

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 成人羞羞在线观看网站 | 午夜视频你懂的 | 国产精品一区二区手机在线观看 | 一级做受毛片免费大片 | 欧美黄色一级片在线观看 | 中文字幕免费在线观看视频 | 国产亚洲精品久久久久久久久久 | 久久国产在线观看 | 成码无人av片在线观看网站 | 日韩黄色影视 | 精品一区二区免费视频视频 | 成人在线激情视频 | 失禁高潮抽搐喷水h | 国产色视频一区 | qyl在线视频精品免费观看 | 欧美电影在线观看 | 韩国精品久久久 | 成人做爰s片免费看网站 | 99在线热视频 | 国产无区一区二区三麻豆 | 日韩剧情片 | 精品国产乱码一区二区 | 成人午夜一区二区 | 欧洲成人免费 | 久久久国产精品网站 | 成人在线视频精品 | av免费提供| 欧美一级毛片一级毛片 | 国产一级一片免费播放 | av电影在线观看网址 | 99最新网址 | 免费h片 | 女人解衣喂奶电影 | 四虎久草 | 色中射| 一级全毛片 | 九色激情网 | av成人免费在线观看 | 精品久久中文字幕 | 亚洲va久久久噜噜噜久久男同 | 国产一区二区免费看 |