如何在Python中发送带有pdf附件的电子邮件?

alw*_*btc 6 python email smtplib email-attachments

可能重复:
如何使用python发送电子邮件附件

我想编辑以下代码并发送带附件的电子邮件.附件是一个pdf文件,它位于linux环境下的/home/myuser/sample.pdf下.我应该在下面更改什么?

import smtplib  
fromaddr = 'myemail@gmail.com'  
toaddrs  = 'youremail@gmail.com'  
msg = 'Hello'  


# Credentials (if needed)  
username = 'myemail'  
password = 'yyyyyy'  

# The actual mail send  
server = smtplib.SMTP('smtp.gmail.com:587')  
server.starttls()  
server.login(username,password)  
server.sendmail(fromaddr, toaddrs, msg)  
server.quit()  
Run Code Online (Sandbox Code Playgroud)

ver*_*ude 14

在这种情况下,您使用电子邮件包创建邮件 -

from email.MIMEMultipart import MIMEMultipart
from email.MIMEText import MIMEText
from email.MIMEImage import MIMEImage
msg = MIMEMultipart()
msg.attach(MIMEText(file("/home/myuser/sample.pdf").read()))
Run Code Online (Sandbox Code Playgroud)

然后发送消息.

import smtplib
mailer = smtplib.SMTP()
mailer.connect()
mailer.sendmail(from_, to, msg.as_string())
mailer.close()
Run Code Online (Sandbox Code Playgroud)

这里有几个例子 - http://docs.python.org/library/email-examples.html

UPDATE

自上面更新链接后产生404 https://docs.python.org/2/library/email-examples.html.谢谢@Tshirtman

  • 你给的代码中的`file`是什么?它是Python函数吗? (6认同)
  • 先生,我有最大的动力,相信我. (4认同)
  • 非常感谢你。这就是使stackoverflow成为全球最佳网站的答案。我无视侮辱性评论。 (2认同)
  • 我不知道答案后这是否有所改变.但现在对我来说,有效的类型是pdf的`MIMEApplication`. (2认同)
  • 就python3.7x而言,这些MIME *类现在可以导入为:从email.mime.text导入MIMEText从email.mime.multipart导入MIMEMultipart (2认同)
  • `file` 给出一个错误。它是什么? (2认同)
  • 我投票 -1 因为不清楚 file() 是什么 (2认同)

小智 6

推荐的方法是使用 Python 的email模块来编写格式正确的 MIME 消息。查看文档

对于 python 2
https://docs.python.org/2/library/email-examples.html

对于 python 3
https://docs.python.org/3/library/email.examples.html

  • 此链接现已失效 (3认同)