Как добавить изображение в Email body_python - PullRequest
0 голосов
/ 27 февраля 2020

Я использую python для отправки электронной почты. Мне нужно вставить картинку в основную электронную почту следующим образом:

I need like this:

Но мой вывод не покажите изображение вот так:

enter image description here

Я пытаюсь решить многие проблемы, но это неэффективно. Это мой код ниже:

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()

Пожалуйста, скажите мне, как добавить изображение в мое тело электронной почты /. * 10101 *

1 Ответ

0 голосов
/ 27 февраля 2020

Главное сообщение должно быть установлено на MIMEMultipart с 'related' подтипом (первый аргумент).

Затем к изображению необходимо прикрепить идентификатор контента, например:

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())

[Это часть моей оболочки электронной почты, следовательно, «изображения» - это диктат и тому подобное.]

Для ссылки на изображение в html, в sr c используйте cid: и имя (то же, которое использовалось для прикрепления pi c к электронному письму), например,

<img src="cid:logo"/>
...