Python實現傳送郵件的功能(高階)

2021-10-12 01:37:30 字數 3393 閱讀 9424

上篇文章已經介紹了利用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,要理解其用法以及對應引數所實現的功能區別 ...