将pdf文件附加到EmailMessage?

时间:2017-06-13 17:58:50

标签: python python-3.x email pdf python-3.6

我正在尝试设置自动发送电子邮件脚本。我正在使用电子邮件模块和EmailMessage模块中的email.message对象,并使用smtplib模块发送电子邮件。我希望能够将.pdf文件附加到电子邮件中,但add_attachment() EmailMessage()方法的文档不是很有用,我甚至不确定我应该使用它。

到目前为止,我已删除了无关的信息:

import time
import smtplib
from email.message import EmailMessage

FROM = 'my email'

s = smtplib.SMTP('smtp.gmail.com', 587)
s.ehlo()
s.starttls()
s.login('my email', 'password')

for line in open('to.csv'):
    line = line.strip()
    fields = line.split(',')

    subject = 'subject'

    email = EmailMessage()

    email['Subject'] = 'subject'
    email['From'] = FROM
    email['To'] = 'to email'


    s.send_message(email)

    print('Sent to {0}'.format(fields[TO]))

    time.sleep(5)

s.quit()

如何附加pdf文件?我搜索并看到一个答案是使用MIMEText对象添加附件,但它似乎不起作用pdf。

1 个答案:

答案 0 :(得分:3)

等待答案...但这是我要做的事情

email = EmailMessage()

email['Subject'] = 'subject'
email['From'] = FROM
email['To'] = 'to email'

with open('example.pdf', 'rb') as content_file:
    content = content_file.read()
    email.add_attachment(content, maintype='application/pdf', subtype='pdf', filename='example.pdf')

s.send_message(email)

顺便说一句,这不是一个重复的问题,在这个问题中,他使用EmailMessage而不使用MIMEText / MIMEPart等。