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)
相關文章
- 傳送帶圖片的郵件
- Python 傳送帶有附件的郵件Python
- python傳送郵件Python
- 【python】用SMTP模組傳送帶附件的郵件Python
- Python SMTP傳送郵件Python
- python實現郵件的傳送Python
- python實現傳送郵件Python
- 郵件的傳送
- 解決jenkins 傳送郵件圖片亂碼問題Jenkins
- SpringBoot整合Mail傳送郵件&傳送模板郵件Spring BootAI
- Python 傳送郵件的幾種方式Python
- 郵件傳送
- 傳送郵件
- Ubuntu的郵件傳送Ubuntu
- Java Mail 郵件傳送(二):簡單封裝的郵件傳送JavaAI封裝
- Python2.7 smtplib傳送帶附件郵件報錯STARTTLS解PythonTLS
- 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
- 如何傳送電子郵件到別人郵箱?電子郵件傳送的方法
- 用Python3傳送郵件詳解Python
- 使用Python批次傳送個性化郵件Python
- Python 實現郵件傳送功能(進階)Python
- Python 實現郵件傳送功能(初級)Python
- Python郵件傳送,看這篇就夠Python
- python實現基於smtp傳送郵件Python
- golang傳送郵件(qq郵箱)Golang
- Android 快速傳送郵件Android
- 使用phpmailer傳送郵件PHPAI