Я пытаюсь отправить электронное письмо с вложенными файлами изображений и внедренными файлами изображений внутри тела письма, используя шаблон HTML, пока я могу только прикреплять файлы изображений, но файлы встроенных изображений не отображаются в письме. Это говорит, что изображение ссылки не может быть отображено, файл может быть удален, удален или переименован. проверьте точку ссылки, чтобы исправить файл изображения и местоположение, а также вложенные файлы имеют одинаковый размер. ниже приведен код, который я использовал
import datetime
from requests_toolbelt import MultipartEncoder
import requests
import glob, os
import argparse
import smtplib
import base64
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
from email.mime.image import MIMEImage
from os.path import basename
import os
import shutil
import socket
import ntpath
from jinja2 import Template
def send_mail(send_from: str, subject: str, text: str,send_to: list, files= None):
send_to= default_address if not send_to else send_to
main = Template('''
<html><body>
{% for image in pictures %}<img src="cid:{{image}}">{% endfor %}
</body></html>''')
msg = MIMEMultipart()
html = main.render(pictures=files)
part2 = MIMEText(html, 'html')
msg.attach(part2)
msg['From'] = send_from
msg['To'] = ', '.join(send_to)
msg['Subject'] = subject
for f in files or []:
with open(f, "rb") as fil:
msgImage = MIMEImage(fil.read())
ext = f.split('.')[-1:]
attachedfile = MIMEApplication(fil.read(), _subtype = ext)
fil.close()
msgImage.add_header('Content-ID', '<{}>'.format(f))
msgImage.add_header('content-Disposition','inline',filename=f)
msg.attach(msgImage)
attachedfile.add_header(
'content-disposition', 'attachment', filename=basename(f) )
msg.attach(msgImage)
msg.attach(attachedfile)
smtp = smtplib.SMTP(host="smtp-mail.outlook.com", port= 25)
smtp.starttls()
smtp.login(usr,pwd)
smtp.sendmail(send_from, send_to, msg.as_string())
smtp.close()
send_mail(send_from= frommail,
subject="Daily backup Testing",
text='files added: ',
send_to= tomail,
files= files_list)
Я получаю почту как это . Файлы пути к изображениям верны. когда я печатаю, я получаю это files ['check123\\Screenshot (161).png', 'check123\\Screenshot (163).png', 'check123\\Screenshot (164).png']
Я не знаю, где я делаю неправильно, если путь к файлу неверен, он должен был выдать ошибку при чтении самого файла fil.read (). Кто-нибудь может указать мне на ошибку в моем коде? спасибо