使用Python从gmail发送电子邮件

2024-01-26

我正在尝试通过构建对我有用的程序/脚本来自学如何编程。我正在尝试重新编写我在网上找到的脚本,以使用 python 脚本通过 gmail 发送电子邮件(Source http://kutuma.blogspot.com/2007/08/sending-emails-via-gmail-with-python.html).

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

感谢您的帮助。


您使用的示例代码创建多部分 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()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用Python从gmail发送电子邮件 的相关文章

随机推荐