Python 傳送郵件的幾種方式
Python 傳送郵件的幾種方式
1. 前言
郵件,作為最正式規範的溝通方式,在日常辦公過程中經常被用到
我們都知道 Python 內建了對 SMTP 的支援,可以傳送純文字、富文字、HTML 等格式的郵件
本文將聊聊利用 Python 傳送郵件的 3 種方式
2. 準備
以 126 郵箱為例,在編碼之前,我們需要開啟 SMTP 服務
然後,手動新增一個授權碼
其中, 賬號、授權碼和伺服器地址用於連線登入郵箱伺服器
3. 方式一:smtplib
def __init__(self): # 初始化 self.smtp = smtplib.SMTP() # 連線郵箱伺服器地址 self.smtp.connect('smtp.126.com') # 加入主題和附件,郵件體 self.email_body = MIMEMultipart('mixed') # 發件人地址及授權碼 self.email_from_username = '**@126.com' self.email_from_password = '授權碼' # 登入 self.smtp.login(self.email_from_username, self.email_from_password) 然後,將收件人列表、郵件標題、郵件正文內容、附件路徑及附件檔名加入到上面定義的郵件體中def generate_email_body(self, email_to_list, email_title, email_content, attchment_path, files): """ 組成郵件體 :param email_to_list:收件人列表 :param email_title:郵件標題 :param email_content:郵件正文內容 :param attchment_path:附件的路徑 :param files:附件檔名列表 :return: """ self.email_body['Subject'] = email_title self.email_body['From'] = self.email_from_username self.email_body['To'] = ",".join(email_to_list) for file in files: file_path = attchment_path + '/' + file if os.path.isfile(file_path): # 構建一個附件物件 att = MIMEText(open(file_path, 'rb').read(), 'base64', 'utf-8') att["Content-Type"] = 'application/octet-stream' att.add_header("Content-Disposition", "attachment", filename=("gbk", "", file)) self.email_body.attach(att) text_plain = MIMEText(email_content, 'plain', 'utf-8') self.email_body.attach(text_plain) 接著,就可以使用 SMTP 例項物件,將郵件傳送出去 # 收件人列表 email_to_list = ['收件人1地址','收件人2地址'] # 傳送郵件 # 注意:此處必須同時指定發件人與收件人,否則會當作垃圾郵件處理掉 self.smtp.sendmail(self.email_from_username, email_to_list, self.email_body.as_string()) 郵件傳送完畢之後,退出服務即可def exit(self): """ 退出服務 :return: """ self.smtp.quit()
4. 方式二:zmail
Zmail 專案建立目的是,使郵件處理變得更簡單首先,安裝依賴庫 # 安裝依賴庫 pip3 install zmail然後,使用郵箱賬號、授權碼建立一個郵箱服務物件 class ZMailObject(object): def __init__(self): # 郵箱賬號 self.username = '**@126.com' # 郵箱授權碼 self.authorization_code = '授權碼' # 構建一個郵箱服務物件 self.server = zmail.server(self.username, self.authorization_code) 接著,將郵件主題、郵件內容、包含的附件路徑加入到一個字典中,組成郵件主體 # 郵件主體 mail_body = { 'subject': '測試報告', 'content_text': '這是一個測試報告', # 純文字或者HTML內容 'attachments': ['./attachments/report.png'], } 最後,將呼叫send_mail()函式,將郵件傳送出去即可 # 收件人 # 可以指定一個人,字串;也可以是多個人,列表 mail_to = "收件人1" # 傳送郵件 self.server.send_mail(mail_to, mail_body)
5. 方式三:yagmail
yagmail 只需要幾行程式碼,就能實現傳送郵件的功能
相比 zmail,yagmail 實現傳送郵件的方式更加簡潔優雅
# 安裝依賴庫 pip3 install yagmail 然後,通過賬號、授權碼和伺服器地址連線郵箱伺服器,返回一個服務物件 import yagmail # 連線伺服器 # 使用者名稱、授權碼、伺服器地址 yag_server = yagmail.SMTP(user='**@126.com', password='授權碼', host='smtp.126.com') 接著,通過 send() 函式,將郵件傳送出去 # 傳送物件列表 email_to = ['**@qq.com', ] email_title = '測試報告' email_content = "這是測試報告的具體內容" # 附件列表 email_attachments = ['./attachments/report.png', ] # 傳送郵件 yag_server.send(email_to, email_title, email_content, email_attachments) 郵件傳送完畢之後,關閉連線即可 # 關閉連線 yag_server.close()
上面總結了 Python 傳送郵件的 3 種方式,實際專案中,更推薦使用後兩種方式
About Me
........................................................................................................................ ● 本文作者:小麥苗,部分內容整理自網路,若有侵權請聯絡小麥苗刪除 ● 本文在個人微 信公眾號( DB寶)上有同步更新 ● QQ群號: 230161599 、618766405,微信群私聊 ● 個人QQ號(646634621),微 訊號(db_bao),註明新增緣由 ● 於 2020年9月 在西安完成 ● 最新修改時間:2020年9月 ● 版權所有,歡迎分享本文,轉載請保留出處 ........................................................................................................................ ● 小麥苗的微店: https://weidian.com/s/793741433?wfr=c&ifr=shopdetail ● 小麥苗出版的資料庫類叢書: http://blog.itpub.net/26736162/viewspace-2142121/ ● 小麥苗OCP、OCM、高可用、DBA學習班: http://blog.itpub.net/26736162/viewspace-2148098/ ● 資料庫筆試面試題庫及解答: http://blog.itpub.net/26736162/viewspace-2134706/ ........................................................................................................................ 請掃描下面的二維碼來關注小麥苗的微 信公眾號( DB寶)及QQ群(230161599、618766405)、新增小麥苗微 信(db_bao), 學習最實用的資料庫技術。
........................................................................................................................ |
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26736162/viewspace-2718926/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 最全總結!聊聊 Python 傳送郵件的幾種方式Python
- 兩種go傳送郵件的方式Go
- python接收郵件的幾種方式Python
- python傳送郵件Python
- Python SMTP傳送郵件Python
- python實現郵件的傳送Python
- python實現傳送郵件Python
- 郵件的傳送
- 郵件基本概念及傳送方式
- SpringBoot整合Mail傳送郵件&傳送模板郵件Spring BootAI
- Python 傳送帶有附件的郵件Python
- 郵件傳送
- 傳送郵件
- 結合Spring傳送郵件的四種正確姿勢,你知道幾種?Spring
- Ubuntu的郵件傳送Ubuntu
- Java Mail 郵件傳送(二):簡單封裝的郵件傳送JavaAI封裝
- Linux 命令列傳送郵件的 5 種方法Linux命令列
- Spring Boot 郵件傳送的 5 種姿勢!Spring Boot
- java郵件傳送Java
- Django——郵件傳送Django
- gmail傳送郵件AI
- phpcms傳送郵件PHP
- Laravel 傳送郵件Laravel
- thinkjs 傳送郵件JS
- SpringBoot傳送郵件Spring Boot
- SpringBoot郵件傳送Spring Boot
- Laravel傳送郵件Laravel
- PHP傳送郵件PHP
- nodejs 傳送郵件NodeJS
- 在Python如何使用SMTP傳送郵件Python
- python: 傳送內容帶圖片的郵件Python
- 如何傳送電子郵件到別人郵箱?電子郵件傳送的方法
- 在 Linux 命令列傳送郵件的 5 種方法Linux命令列
- 用Python3傳送郵件詳解Python
- 使用Python批次傳送個性化郵件Python
- Python 實現郵件傳送功能(進階)Python
- Python 實現郵件傳送功能(初級)Python
- Python郵件傳送,看這篇就夠Python