上篇文章已經介紹了利用python傳送文字訊息的用法,也在文末遺留了如何傳送和附件的問題,本章主要來回答這兩個問題。
如何傳送
如何傳送普通附件
def
attach_picture
(self, picture_path, msg)
:try
:with
open
(picture_path,
'rb'
)as f:
image = f.read(
)except exception as e:
self.logger.error(e)
image_name = picture_path.split(
'/')[-
1]image_attach = mimeimage(image)
image_attach.add_header(
'content-disposition'
,'attachment'
, filename=header(image_name,
'utf-8'
).encode())
msg.attach(image_attach)
return msg
# 傳送多張,picture_path是乙個路徑列表
defattach_picture
(self, picture_path, msg)
: cid =
0for filename in picture_path:
try:
with
open
(filename,
'rb'
)as f:
image = f.read(
)except exception as e:
self.logger.error(e)
image_name = filename.split(
'/')[-
1]image_attach = mimeimage(image)
image_attach.add_header(
'content-disposition'
,'attachment'
, filename=header(image_name,
'utf-8'
).encode())
image_attach.add_header(
'content-id'
,'+str
(cid)
+'>'
)# 設定id
msg.attach(image_attach)
cid +=
1return msg
測試的資料可以寫成如下方式:
html =
'''this is the first picture
this is the second picture
問題二: 如何傳送普通附件
def
attach_other_file
(self, file_path, msg)
:# 郵件加入附件
try:
with
open
(file_path,
'rb'
)as f:
file
= f.read(
)except exception as e:
self.logger.error(e)
file_name = file_path.split(
'/')[-
1]# 從絕對路徑中取出檔名
# file_name = os.path.split(filename)[-1] # 從絕對路徑中取出檔名
file
)# 通過filename給附件命名
file_attach.add_header(
'content-disposition'
,'attachment'
, filename=header(file_name,
'utf-8'
).encode())
msg.attach(file_attach)
return msg
上面兩個問題對應的message_init方法實現方式如下:
def
message_init
(self, html)
:'''
對即將傳送的內容進行初始化
:param html: 傳送郵件正文內容
:return:
'''message = mimemultipart(
)# 內容接收池
message[
'subject'
]= header(self.subject,
'utf-8'
) message[
'from'
]= self._format_addr(
'吳雪情 '
% self.sender)
message[
'to']=
', '
.join(self.receiver)
message[
'cc']=
', '
.join(self.cc)
# 解決亂碼,html是html格式的字串
message_content = mimetext(html, _subtype=
'html'
, _charset=
'utf-8'
)# 郵件的正文內容
message.attach(message_content)
# 注意這裡的file_path裡面是單個的檔案路徑,不涉及多個
# 郵件加入
message = self.attach_picture(file_path, message)
else
:# 郵件加入附件
message = self.attach_other_file(file_path, message)
return message
綜上,對於郵件的傳送方法已基本實現,那麼問題來了,當你傳送測試報告的時候當然需要傳送多個檔案,像這樣單獨乙個檔案乙個檔案新增到附件就不太切實際,這樣就需要我們傳送乙個壓縮包,怎麼壓縮檔案呢?關注我,下期為你解答。 Python實現自動傳送郵件功能
簡單郵件傳輸協議 smtp 是一種協議,用於在郵件伺服器之間傳送電子郵件和路由電子郵件。python提供smtplib模組,該模組定義了乙個smtp客戶端會話物件,可用於使用smtp或esmtp偵聽器守護程式向任何網際網路機器傳送郵件。smtp通訊的基本流程可以概括為以下幾點 1.連線smtp伺服器...
python傳送郵件功能
1.引入第三方模組 2.安裝方式 pip install yagmail 0.10.212 py2.py3 none any.whl 說明 存在中文亂碼的問題 3.設定郵箱 1 啟動pop3 smtp服務 2 設定授權碼 4.編寫指令碼,如下圖所示 5.方法解析 1 mail yagmail.smt...
python2 7實現郵件傳送功能
要想實現乙個能夠傳送帶有文字 附件的python程式,首先要熟悉兩大模組 email以及smtplib 然後對於mime 郵件擴充套件 要有一定認知,因為有了擴充套件才能傳送附件以及這些 或者非文字資訊 最後乙個比較細節的方法就是mimemultipart,要理解其用法以及對應引數所實現的功能區別 ...