使用Python从gmail发送电子邮件

时间:2010-10-04 00:48:32

标签: python gmail

我正在尝试通过构建对我有用的程序/ scrips来自学如何编程。我正在尝试重新调整我在网上找到的脚本,使用python脚本(Source)通过gmail发送电子邮件。

这个例子有一部分代码来附加文件,我不想要/不需要。我已经调整了代码,以便我不必附加任何文件,但是当我这样做时,我丢失了电子邮件的正文。有关如何修改代码以保持电子邮件正文完整的任何帮助/提示?

感谢帮助。

2 个答案:

答案 0 :(得分:5)

您正在使用的示例代码会创建多部分MIME邮件。一切都是附件,包括信息正文。如果您只想发送普通的单部分纯文本或HTML消息,则不需要任何MIME内容。它只会增加复杂性。在示例的sendmail()调用中看到msg.as_string()中的那个位?好吧,这只是将您创建的MIME对象转换为文本。如果你正在处理文本,那么很容易自己指定文本。

下面的函数类似于我在我编写的脚本中用于邮寄日志文件的代码。它需要一个纯文本正文并将其转换为预格式化的HTML(以便在Outlook中更好地工作)。如果要保持纯文本,只需取出添加HTML标记的行,并将Content-Type标题更改为“text / plain”。

import smtplib

def sendmail(sender, recipient, subject, body, server="localhost"):
    "Sends an e-mail to the specified recipient."

    body = ("<html><head></head><body><pre>%s</pre></body></html>" % 
             body.replace("&", "&amp;").replace("<", "&lt;"))

    headers = ["From: " + sender,
               "Subject: " + subject,
               "To: " + recipient,
               "MIME-Version: 1.0",
               "Content-Type: text/html"]
    headers = "\r\n".join(headers)

    session = smtplib.SMTP(server)
    session.sendmail(sender, recipient, headers + "\r\n\r\n" + body)                
    session.quit()

答案 1 :(得分:1)

我看到你对你做错了什么有了解。

在这种情况下,方法attach()指的是向电子邮件添加内容。这是令人困惑的,因为当我们关于附加事物和电子邮件时,我们考虑添加额外的文件,而不是身体。

基于其他一些examples,似乎附加方法用于向正文添加文本或向电子邮件添加文件。

所以,为了回答你的问题,attach方法会做你认为它做的事情以及更多 - 它还会向正文添加文本。

顺便说一句,欢迎来到SO。聪明的选择选择Python来学习如何编写脚本。

相关问题