[英]How to add image to Email body_python
I use python for sending Email.I need to insert picture to body e-mail like this:我使用 python 发送 Email。我需要像这样将图片插入正文电子邮件:
But my output not show image like this:但是我的 output 不显示这样的图像:
I try many solution for fix it but it ineffectively.我尝试了很多解决方案来修复它,但效果不佳。 This's my code is below:
这是我的代码如下:
import smtplib
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.header import Header
import pandas as pd
import win32com.client as win32
import openpyxl
import sys
from PIL import ImageGrab
from pathlib import Path
df = pd.read_excel("xxxxx", sheet_name = "sample",nrows = 2, usecols = "A:W")
df1 = pd.read_excel("xxxx", sheet_name = "sample")
excel_path = ("sample")
excel = win32.gencache.EnsureDispatch('Excel.Application')
excel.Visible = False
excel.DisplayAlerts = False
wb = excel.Workbooks.Open(excel_path)
ws = wb.Worksheets(1)
win32c = win32.constants
ws.Range("A1:H33").CopyPicture(Format=win32c.xlBitmap)
img = ImageGrab.grabclipboard()
image_path = str("path" + 'te.png')
img.save(image_path)
outlook = win32.gencache.EnsureDispatch('Outlook.Application')
new_mail = outlook.CreateItem(0)
user = df1.loc[34,"Unnamed: 4"]
approver = df1.loc[36,"Unnamed: 4"]
def FIN(xReceiveTO,xReceiveCC, xsubject, xBody):
FROM = 'from@example.com'
TO = 'To@example.com'
CC = ""
#msg = MIMEMultipart()
msg = MIMEText("<html><body><h1>ดำเนินการส่งให้ทีม AP แล้ว</h1>" +
"<p>รายละเอีดตามข้อมูลด้านล่าง" +
"html_pages + <br><img src=te.png>"+
"<a href=""mailto:CFGFIN002@ngerntidlor.com?cc=" + user + ";"+ approver + "&subject=Invoice%20ฉบับนี้ผ่านการพิจารณาอนุมัติจาก%20หัวหน้าทีมแล้ว%20รบกวนทีม%20AP%20ตรวจสอบสอบส่งต่อไปทีม%20Financial%20Planing%20and%20Analytics%20ครับ&body=ทีม%20AP%20ได้ทำการตรวจสอบแล้วมีความเห็นว่าสมควร%20Approve%20ครับ>Approve</a> "+" "+"<a href=""mailto:CFGFIN002@ngerntidlor.com?cc=" +user + ";"+ approver + "&subject=Invoice%20ฉบับนี้ไม่ผ่านการพิจารณาอนุมัติจากทีม%20AP&body=ทีม%20AP%20ได้ทำการตรวจสอบแล้วมีความเห็นว่าสมควร%20Reject%20ครับ%20>Reject</a>"
"</body></html>","html","utf-8""")
#msg['Subject'] = Header(subject, 'utf-8')
msg['Subject'] = "Test"
msg['To'] = ', '.join(xReceiveTO)
msg['CC'] = ', '.join(xReceiveCC)
msg['FROM'] = FROM
s = smtplib.SMTP('10.45.1.25')
s.send_message(msg)
s.quit()
Please tell me how to add image to my body email /.请告诉我如何将图像添加到我的身体 email /。
Main message has to be set to MIMEMultipart
with 'related'
subtype (first argument).主消息必须设置为带有
'related'
子类型(第一个参数)的MIMEMultipart
。
Then, the image has to be attached with content-id, as such:然后,图像必须附加 content-id,如下所示:
msg = MIMEMultipart("related")
msg["Subject"] = subject
msg["From"] = from_addr
msf["To"] = to_addr
html_output = "your html here"
msg.attach(MIMEText(html_output, "html"))
if images:
for image_name, image_location in images.items():
with open(image_location, "rb") as fp:
img = MIMEImage(fp.read())
img.add_header("Content-ID", "<{}>".format(image_name))
msg.attach(img)
smtplib.SMTP(host, port).sendmail(self.from_addr, to_addr, msg.as_string())
[This is part of my email wrapper, hence "images" is a dict and such.] [这是我的电子邮件包装器的一部分,因此“图像”是一个字典等等。]
To refer to the image in the html, in src use cid:
and the name (the same that was used to attach the pic to the email), eg要引用 html 中的图像,在 src 中使用
cid:
和名称(与用于将图片附加到电子邮件的名称相同),例如
<img src="cid:logo"/>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.