我正在尝试在电子邮件中嵌入一张图片。我已经按照这里,这里和这里等示例进行操作,但是我无法让图片显示出来。
当我执行此操作时,我得到一个空白的主体,里面有一个红色的十字,没有图像。如何使图像与电子邮件正文一起显示?
我正在使用Outlook 2016。我知道在使用Outlook本身时可以插入图片,并且我已经收到其他人在文本中插入图像的“普通”电子邮件,因此这意味着我必须能够查看从Python脚本生成的图像吗?
编辑:我已经查看了给出的解决方案here,被建议作为可能的重复项,但这也没有解决我的问题。
我还尝试将相同的电子邮件发送到Gmail和hotmail帐户,但仍然出现相同的问题,因此问题显然与代码有关。
import smtplib
import os
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
logo = 'mylogo.png'
msg = MIMEMultipart('alternative')
msg['Subject'] = "Link"
msg['From'] = 'sender@email.com'
msg['To'] = 'recipient@email.com'
html = """\
<html>
<head></head>
<body>
<p>GREETING<br><br>
SOME TEXT<br>
MORE TEXT<br><br>
FAREWELL <br><br>
DISCLAIMER
</p>
<img src="cid:image1" alt="Logo" \>
</body>
</html> """
part1 = MIMEText(text, 'plain')
part2 = MIMEText(html, 'html', 'utf-8')
msg.attach(part1)
msg.attach(part2)
fp = open(logo, 'rb')
msgImage = MIMEImage(fp.read())
fp.close()
msgImage.add_header('Content-ID', '<image1>')
msgImage.add_header('Content-Disposition', 'inline', filename=os.path.basename(logo))
msgImage.add_header("Content-Transfer-Encoding", "base64")
msg.attach(msgImage)
s = smtplib.SMTP(smtp_server,25)
s.sendmail(sender, recipient, msg.as_string())
s.quit()
当我执行此操作时,我得到一个空白的主体,里面有一个红色的十字,没有图像。如何使图像与电子邮件正文一起显示?
我正在使用Outlook 2016。我知道在使用Outlook本身时可以插入图片,并且我已经收到其他人在文本中插入图像的“普通”电子邮件,因此这意味着我必须能够查看从Python脚本生成的图像吗?
编辑:我已经查看了给出的解决方案here,被建议作为可能的重复项,但这也没有解决我的问题。
我还尝试将相同的电子邮件发送到Gmail和hotmail帐户,但仍然出现相同的问题,因此问题显然与代码有关。