vee*_*vee 1 html python email outlook
我使用 python 发送电子邮件。我需要将图片插入到正文电子邮件中,如下所示:
\n\n\n\n但我的输出不显示这样的图像:
\n\n\n\n我尝试了很多解决方案来修复它,但效果不佳。\n这是我的代码如下:
\n\nimport smtplib\nfrom email.mime.image import MIMEImage\nfrom email.mime.multipart import MIMEMultipart\nfrom email.mime.text import MIMEText\nfrom email.header import Header\nimport pandas as pd\nimport win32com.client as win32\nimport openpyxl\nimport sys\nfrom PIL import ImageGrab\nfrom pathlib import Path\ndf = pd.read_excel("xxxxx", sheet_name = "sample",nrows = 2, usecols = "A:W")\ndf1 = pd.read_excel("xxxx", sheet_name = "sample")\nexcel_path = ("sample")\nexcel = win32.gencache.EnsureDispatch(\'Excel.Application\')\nexcel.Visible = False\nexcel.DisplayAlerts = False\nwb = excel.Workbooks.Open(excel_path)\nws = wb.Worksheets(1)\nwin32c = win32.constants\nws.Range("A1:H33").CopyPicture(Format=win32c.xlBitmap)\nimg = ImageGrab.grabclipboard()\nimage_path = str("path" + \'te.png\')\nimg.save(image_path)\noutlook = win32.gencache.EnsureDispatch(\'Outlook.Application\')\nnew_mail = outlook.CreateItem(0)\nuser = df1.loc[34,"Unnamed: 4"]\napprover = df1.loc[36,"Unnamed: 4"]\ndef FIN(xReceiveTO,xReceiveCC, xsubject, xBody):\n FROM = \'from@example.com\'\n TO = \'To@example.com\'\n CC = "" \n #msg = MIMEMultipart()\n msg = MIMEText("<html><body><h1>\xe0\xb8\x94\xe0\xb8\xb3\xe0\xb9\x80\xe0\xb8\x99\xe0\xb8\xb4\xe0\xb8\x99\xe0\xb8\x81\xe0\xb8\xb2\xe0\xb8\xa3\xe0\xb8\xaa\xe0\xb9\x88\xe0\xb8\x87\xe0\xb9\x83\xe0\xb8\xab\xe0\xb9\x89\xe0\xb8\x97\xe0\xb8\xb5\xe0\xb8\xa1 AP \xe0\xb9\x81\xe0\xb8\xa5\xe0\xb9\x89\xe0\xb8\xa7</h1>" +\n "<p>\xe0\xb8\xa3\xe0\xb8\xb2\xe0\xb8\xa2\xe0\xb8\xa5\xe0\xb8\xb0\xe0\xb9\x80\xe0\xb8\xad\xe0\xb8\xb5\xe0\xb8\x94\xe0\xb8\x95\xe0\xb8\xb2\xe0\xb8\xa1\xe0\xb8\x82\xe0\xb9\x89\xe0\xb8\xad\xe0\xb8\xa1\xe0\xb8\xb9\xe0\xb8\xa5\xe0\xb8\x94\xe0\xb9\x89\xe0\xb8\xb2\xe0\xb8\x99\xe0\xb8\xa5\xe0\xb9\x88\xe0\xb8\xb2\xe0\xb8\x87" +\n "html_pages + <br><img src=te.png>"+\n "<a href=""mailto:CFGFIN002@ngerntidlor.com?cc=" + user + ";"+ approver + "&subject=Invoice%20\xe0\xb8\x89\xe0\xb8\x9a\xe0\xb8\xb1\xe0\xb8\x9a\xe0\xb8\x99\xe0\xb8\xb5\xe0\xb9\x89\xe0\xb8\x9c\xe0\xb9\x88\xe0\xb8\xb2\xe0\xb8\x99\xe0\xb8\x81\xe0\xb8\xb2\xe0\xb8\xa3\xe0\xb8\x9e\xe0\xb8\xb4\xe0\xb8\x88\xe0\xb8\xb2\xe0\xb8\xa3\xe0\xb8\x93\xe0\xb8\xb2\xe0\xb8\xad\xe0\xb8\x99\xe0\xb8\xb8\xe0\xb8\xa1\xe0\xb8\xb1\xe0\xb8\x95\xe0\xb8\xb4\xe0\xb8\x88\xe0\xb8\xb2\xe0\xb8\x81%20\xe0\xb8\xab\xe0\xb8\xb1\xe0\xb8\xa7\xe0\xb8\xab\xe0\xb8\x99\xe0\xb9\x89\xe0\xb8\xb2\xe0\xb8\x97\xe0\xb8\xb5\xe0\xb8\xa1\xe0\xb9\x81\xe0\xb8\xa5\xe0\xb9\x89\xe0\xb8\xa7%20\xe0\xb8\xa3\xe0\xb8\x9a\xe0\xb8\x81\xe0\xb8\xa7\xe0\xb8\x99\xe0\xb8\x97\xe0\xb8\xb5\xe0\xb8\xa1%20AP%20\xe0\xb8\x95\xe0\xb8\xa3\xe0\xb8\xa7\xe0\xb8\x88\xe0\xb8\xaa\xe0\xb8\xad\xe0\xb8\x9a\xe0\xb8\xaa\xe0\xb8\xad\xe0\xb8\x9a\xe0\xb8\xaa\xe0\xb9\x88\xe0\xb8\x87\xe0\xb8\x95\xe0\xb9\x88\xe0\xb8\xad\xe0\xb9\x84\xe0\xb8\x9b\xe0\xb8\x97\xe0\xb8\xb5\xe0\xb8\xa1%20Financial%20Planing%20and%20Analytics%20\xe0\xb8\x84\xe0\xb8\xa3\xe0\xb8\xb1\xe0\xb8\x9a&body=\xe0\xb8\x97\xe0\xb8\xb5\xe0\xb8\xa1%20AP%20\xe0\xb9\x84\xe0\xb8\x94\xe0\xb9\x89\xe0\xb8\x97\xe0\xb8\xb3\xe0\xb8\x81\xe0\xb8\xb2\xe0\xb8\xa3\xe0\xb8\x95\xe0\xb8\xa3\xe0\xb8\xa7\xe0\xb8\x88\xe0\xb8\xaa\xe0\xb8\xad\xe0\xb8\x9a\xe0\xb9\x81\xe0\xb8\xa5\xe0\xb9\x89\xe0\xb8\xa7\xe0\xb8\xa1\xe0\xb8\xb5\xe0\xb8\x84\xe0\xb8\xa7\xe0\xb8\xb2\xe0\xb8\xa1\xe0\xb9\x80\xe0\xb8\xab\xe0\xb9\x87\xe0\xb8\x99\xe0\xb8\xa7\xe0\xb9\x88\xe0\xb8\xb2\xe0\xb8\xaa\xe0\xb8\xa1\xe0\xb8\x84\xe0\xb8\xa7\xe0\xb8\xa3%20Approve%20\xe0\xb8\x84\xe0\xb8\xa3\xe0\xb8\xb1\xe0\xb8\x9a>Approve</a> "+" "+"<a href=""mailto:CFGFIN002@ngerntidlor.com?cc=" +user + ";"+ approver + "&subject=Invoice%20\xe0\xb8\x89\xe0\xb8\x9a\xe0\xb8\xb1\xe0\xb8\x9a\xe0\xb8\x99\xe0\xb8\xb5\xe0\xb9\x89\xe0\xb9\x84\xe0\xb8\xa1\xe0\xb9\x88\xe0\xb8\x9c\xe0\xb9\x88\xe0\xb8\xb2\xe0\xb8\x99\xe0\xb8\x81\xe0\xb8\xb2\xe0\xb8\xa3\xe0\xb8\x9e\xe0\xb8\xb4\xe0\xb8\x88\xe0\xb8\xb2\xe0\xb8\xa3\xe0\xb8\x93\xe0\xb8\xb2\xe0\xb8\xad\xe0\xb8\x99\xe0\xb8\xb8\xe0\xb8\xa1\xe0\xb8\xb1\xe0\xb8\x95\xe0\xb8\xb4\xe0\xb8\x88\xe0\xb8\xb2\xe0\xb8\x81\xe0\xb8\x97\xe0\xb8\xb5\xe0\xb8\xa1%20AP&body=\xe0\xb8\x97\xe0\xb8\xb5\xe0\xb8\xa1%20AP%20\xe0\xb9\x84\xe0\xb8\x94\xe0\xb9\x89\xe0\xb8\x97\xe0\xb8\xb3\xe0\xb8\x81\xe0\xb8\xb2\xe0\xb8\xa3\xe0\xb8\x95\xe0\xb8\xa3\xe0\xb8\xa7\xe0\xb8\x88\xe0\xb8\xaa\xe0\xb8\xad\xe0\xb8\x9a\xe0\xb9\x81\xe0\xb8\xa5\xe0\xb9\x89\xe0\xb8\xa7\xe0\xb8\xa1\xe0\xb8\xb5\xe0\xb8\x84\xe0\xb8\xa7\xe0\xb8\xb2\xe0\xb8\xa1\xe0\xb9\x80\xe0\xb8\xab\xe0\xb9\x87\xe0\xb8\x99\xe0\xb8\xa7\xe0\xb9\x88\xe0\xb8\xb2\xe0\xb8\xaa\xe0\xb8\xa1\xe0\xb8\x84\xe0\xb8\xa7\xe0\xb8\xa3%20Reject%20\xe0\xb8\x84\xe0\xb8\xa3\xe0\xb8\xb1\xe0\xb8\x9a%20>Reject</a>"\n "</body></html>","html","utf-8""")\n #msg[\'Subject\'] = Header(subject, \'utf-8\')\n msg[\'Subject\'] = "Test"\n msg[\'To\'] = \', \'.join(xReceiveTO)\n msg[\'CC\'] = \', \'.join(xReceiveCC)\n msg[\'FROM\'] = FROM\n s = smtplib.SMTP(\'10.45.1.25\')\n s.send_message(msg)\n s.quit()\nRun Code Online (Sandbox Code Playgroud)\n\n请告诉我如何将图像添加到我的正文电子邮件/中。
\n主消息必须设置为MIMEMultipart子'related'类型(第一个参数)。
然后,图像必须附加 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())
Run Code Online (Sandbox Code Playgroud)
[这是我的电子邮件包装的一部分,因此“图像”是一个字典等。]
要引用 html 中的图像,请在 src 中使用cid:和名称(与用于将图片附加到电子邮件中的名称相同),例如
<img src="cid:logo"/>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14919 次 |
| 最近记录: |