python: 傳送內容帶圖片的郵件
強推:Python 菜譜,裡面對 python傳送帶圖片的郵件講的比較清楚。
剛好我有一個需求,就傳送一個網頁形式的郵件,而且網頁中有圖片。
下面是我自己的傳送帶圖片的郵件的程式碼:
def send_email(subject, to_address_list, cc_address_list):
import smtplib
from email.mime.multipart import MIMEMultipart
from email.header import Header
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
sendObj = smtplib.SMTP('mail.gometech.com.cn', 25)
sendObj.set_debuglevel(1) # 列印debug日誌
print(sendObj) # ok 了
# 2. 跟伺服器建立連線
sendObj.ehlo()
# 3. 實現加密的必須的步驟
# sendObj.starttls()
username = r'lemon.tony@163.com'
password = _get_password()
# ##########################--------------- start
# 讀取html檔案內容
f = open('e:/py/notification.html', 'r', encoding='utf-8')
mail_body = f.read()
f.close()
# 00. 型別需要是 multipart 的
msg = MIMEMultipart('related')
msg['To'] = ",".join(to_address_list)
msg['Cc'] = ",".join(cc_address_list)
msg['Subject'] = Header(subject, 'utf-8').encode()
# 01. 新增文字
msgText = MIMEText(mail_body.replace('{username}', newly_gerrit()), _subtype='html', _charset='utf-8')
msg.attach(msgText)
# 02. 新增圖片
file = open("e:/py/dns.jpg", "rb")
img_data = file.read()
file.close()
img = MIMEImage(img_data)
img.add_header('Content-ID', 'dns_config')
msg.attach(img)
login_result = sendObj.login(username, password)
# 4. 傳送郵件
send_result = sendObj.sendmail(username, to_address_list + cc_address_list,
msg.as_string())
# 5. 傳送完成,退出
quit_result = sendObj.quit()
print(login_result, send_result, quit_result)
注意點:
msg = MIMEMultipart('related')
必須選擇這個型別的,不然不能又包含圖片,又包含文字。msg
相當於一個容器,本身沒有具體的內容。如果要什麼內容,就呼叫 msg.attach(msgText)
這樣的方法去包含。
# 02. 新增圖片
file = open("e:/py/dns.jpg", "rb")
img_data = file.read()
file.close()
img = MIMEImage(img_data)
img.add_header('Content-ID', 'dns_config') # todo: 注意這裡的 dns_config 是和 html中對應的
msg.attach(img)
對應的
html
中的程式碼:
<img src="cid:dns_config" alt="dns配置">
<!--todo: src 不是一個路徑了,而是 cid:dns_config 這樣的一個東西 -->
大體上內容就這些,跪安吧。
另外,對於給多個收件人設定暱稱,需要使用到新的方法 : email.utils.formataddr
from email.utils import parseaddr, formataddr
subject = r"這是主題"
to_address = [r'灰貓不是貓<grey.cat@gmail.com>']
cc_address = [formataddr((r'藍貓不是貓', 'blue.cat@gmail.com'), charset='utf-8'),
formataddr((r'呂布', 'tom.cat@gmail.com'), charset='utf-8'),]
send_email(subject, to_address, cc_address)
相關文章
- 傳送帶圖片的郵件
- 使用C#傳送正文帶圖片郵件C#
- Python 傳送帶有附件的郵件Python
- 生成 Charts 圖片,併傳送 Charts 圖片郵件
- Java郵件傳送帶附件Java
- 【python】用SMTP模組傳送帶附件的郵件Python
- python傳送郵件Python
- 使用python傳送郵件和接收郵件Python
- Python SMTP傳送郵件Python
- 使用python傳送郵件Python
- linux shell傳送帶附件的郵件Linux
- 郵件的傳送
- python實現郵件的傳送Python
- 郵件傳送
- 傳送郵件
- Python使用SMTP傳送郵件Python
- python實現傳送郵件Python
- 【主機】sendEmail傳送帶有附件的郵件AI
- 解決jenkins 傳送郵件圖片亂碼問題Jenkins
- c# 傳送郵件程式碼,帶附件C#
- Ubuntu的郵件傳送Ubuntu
- Python 傳送郵件的幾種方式Python
- SpringBoot整合Mail傳送郵件&傳送模板郵件Spring BootAI
- Java Mail 郵件傳送(二):簡單封裝的郵件傳送JavaAI封裝
- Laravel 傳送郵件Laravel
- PHP傳送郵件PHP
- Django——郵件傳送Django
- java郵件傳送Java
- Laravel傳送郵件Laravel
- gmail傳送郵件AI
- Oracle郵件傳送Oracle
- java傳送郵件Java
- Powershell郵件傳送
- thinkphp 郵件傳送PHP
- centos 傳送郵件CentOS
- phpcms傳送郵件PHP
- 使用python傳送和接收郵件Python
- Python通用郵件傳送(smtplib)Python