繁体   English   中英

使用Python从gmail发送电子邮件

[英]Sending email from gmail using Python

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

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

感谢帮助。

您正在使用的示例代码创建了多部分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()

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

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

基于其他一些示例 ,似乎使用attach方法将文本添加到正文或文件添加到电子邮件。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM