0

下面的代码发送包含文本和图像的电子邮件。我正在尝试将此电子邮件(文本和图像)转换为 pdf 文件并将文件下载到特定路径。有没有办法把它转换成pdf?

from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage

strFrom = 'abc@outlook.com'
strTo = 'xyz@outlook.com'

msgRoot = MIMEMultipart('related')
msgRoot['Subject'] = 'Statistics'
msgRoot['From'] = strFrom
msgRoot['To'] = strTo
msgRoot.preamble = 'This is a multi-part message in MIME format.'

msgAlternative = MIMEMultipart('alternative')
msgRoot.attach(msgAlternative)

msgText = MIMEText('This is the alternative plain text message.')
msgAlternative.attach(msgText)

msgText = MIMEText('<b>Number of reports: </b>'+ str(df['COUNT'][0])
                   '<br><img src="cid:image1" table align="left">'
                   '<br><img src="cid:image2" table align="center"><br>','html')

msgAlternative.attach(msgText)

fp = open('plot1.png', 'rb')
msgImage1 = MIMEImage(fp.read())
fp.close()
msgImage1.add_header('Content-ID', '<image1>')
msgRoot.attach(msgImage1)

fp = open('plot.png', 'rb')
msgImage2 = MIMEImage(fp.read())
fp.close()
msgImage2.add_header('Content-ID', '<image2>')
msgRoot.attach(msgImage2)

import smtplib
smtpServer='***'
server = smtplib.SMTP(smtpServer)
server.sendmail(strFrom, strTo, msgRoot.as_string())
server.quit()
4

1 回答 1

0

我用过这个:

https://wkhtmltopdf.org/

多年来,我在许多应用中都坚如磐石。多年来可能已经完成了 100 次,其中数千次,从未出现过问题。

将带有图像的电子邮件正文转换为 html,将其写入磁盘,然后转至 wkhtmltopdf 可执行文件以从生成的 html 生成 PDF。

wkhtmltopdf 和 wkhtmltoimage 是开源 (LGPLv3) 命令行工具,用于使用 Qt WebKit 渲染引擎将 HTML 渲染为 PDF 和各种图像格式。这些完全“无头”运行,不需要显示或显示服务。

于 2020-04-28T09:36:12.000 回答