Python邮件每隔171个字符插入一个空格

2024-04-23 17:42:57 发布

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

我正在尝试编写一个python脚本来发送一封电子邮件,它使用html格式,并且包含很多不间断的空格。但是,当我运行它时,一些amp;nbsp字符串会被每隔171个字符出现一次的空格所中断,如下例所示:

#!/usr/bin/env python
import smtplib
import socket
from email.mime.text import MIMEText

emails = ["my@email.com"]
sender = "test@{0}".format(socket.gethostname())

message = "<html><head></head><body>"
for i in range(20):
        message += "&nbsp;" * 50
        message += "<br/>"
message += "</body>"
message = MIMEText(message, "html")
message["Subject"] = "Test"
message["From"] = sender
message["To"] = ", ".join(emails)
mailer = smtplib.SMTP("localhost")
mailer.sendmail(sender, emails, message.as_string())
mailer.quit()

该示例应生成一个仅包含空格的空白电子邮件,但最终结果如下所示:

^{pr2}$

编辑:如果这很重要,我运行的是ubuntu15.04和Postfix,并使用python2.6。在


Tags: import脚本messagemaileremailhtmlbodysocket
2条回答

我可以复制这种方式,但我的换行每999个字符。RFC821说一行的最大长度是1000个字符,包括换行符,所以这可能就是原因。在

这篇文章给出了用python发送html电子邮件的不同方法,我相信mime类型“multipart/alternative”是正确的方法。 Sending HTML email using Python

我是yagmail的开发人员,这是一个试图使发送电子邮件更容易的包。在

您可以使用以下代码:

import yagmail
yag = yagmail.SMTP('me@gmail.com', 'mypassword')

for i in range(20):
    message += "&nbsp;" * 50
    message += "<br/>"

yag.send(contents = message)

注意,默认情况下,它将发送一个HTML消息,并且它还自动为非HTML浏览器添加可选部分。在

另外,请注意,省略subject将留下一个空主题,如果没有to参数,它将把它发送给self。在

此外,请注意,如果您正确设置了yagmail,您只需使用yag.SMTP()登录,而不必在脚本中包含用户名和密码(同时仍然是安全的)。省略密码将提示getpass。在

添加附件就像指向本地文件一样简单,例如:

^{pr2}$

太棒了,不是吗?感谢您允许我展示一个不错的yagmail用例:)

如果您有任何功能要求、问题或想法,请在github通知我。在

相关问题 更多 >