使用Python从gmail发送电子邮件

2024-06-28 14:34:08 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

感谢你的帮助。在


Tags: 文件代码程序脚本source电子邮件编程邮件
2条回答

我看你对你做错了什么有了线索。在

在本例中,attach()方法指的是向电子邮件中添加内容。这是令人困惑的,因为当我们要附加东西和电子邮件时,我们考虑的是添加额外的文件,而不是正文。在

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

所以,为了回答您的问题,attach方法做了您认为它做的事情,而且它还向正文添加了文本。在

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

您使用的示例代码创建了一个多部分的MIME消息。一切都是附件,包括消息体。如果你只想发送一个简单的单一部分的纯文本或HTML消息,你不需要任何MIME的东西。这只会增加复杂性。在示例的sendmail()调用中,可以看到msg.as\u字符串()? 好吧,这只是把你创建的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()

相关问题 更多 >