我正在尝试通过构建对我有用的程序/ scrips来自学如何编程。我正在尝试重新调整我在网上找到的脚本,使用python脚本(Source)通过gmail发送电子邮件。
这个例子有一部分代码来附加文件,我不想要/不需要。我已经调整了代码,以便我不必附加任何文件,但是当我这样做时,我丢失了电子邮件的正文。有关如何修改代码以保持电子邮件正文完整的任何帮助/提示?
感谢帮助。
答案 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("&", "&").replace("<", "<"))
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来学习如何编写脚本。