gpt4 book ai didi

python - 如何使用 Python 和 SMTP 发送格式正确的电子邮件?

转载 作者:行者123 更新时间:2023-11-28 21:56:19 24 4
gpt4 key购买 nike

我正在尝试使用 Python 脚本发送电子邮件,但不知何故,我希望电子邮件以某种格式出现在我的邮箱中,但它不是那种格式。以下是我发送电子邮件的方法 -

def send_mail(data):
sender = 'fromuser@host.com'
receivers = ['touser@host.com']

message = """From: fromuser@host.com
To: touser@host.com
Subject: Send mail from python!!

"""
body = 'Some Text\n'
for item in data:
body = body + '{name} - {res}\n'.format(name=item['name'], res=item['res'])

message = message + body

try:
smtpObj = smtplib.SMTP('corp.host.com' )
smtpObj.sendmail(sender, receivers, message)
print "Mail sent"
except smtplib.SMTPException:
print "You can't spam. Mail sending failed!"

这里的数据只有键值对。

我在我的 Outlook 邮箱中收到了这样一封电子邮件 -

在我的 outlook 的 From: 部分,下面的字符串是错误的 -

fromuser@host.com To: touser@host.com Subject: Send mail from python!!

To: , Subject: 部分是空的,这也是错误的。

在正文中,我看到所有内容都在一行中,但我希望结果显示为 -

Some Text

machinA - 0
machineB - 0
machineC - 0

如何在我的 Outlook 邮箱中表示要显示的数据?

最佳答案

由于三重引号保留了所有空格,您不小心发送了:

From: fromuser@host.com
To: touser@host.com
Subject: Send mail from python!!

这会调用标题展开:缩进线表示标题是连续的。所以这确实是一个格式错误的 From header 。您需要确保没有多余的空格。这修复了您当前的示例:

def send_mail(data):
sender = 'fromuser@host.com'
receivers = ['touser@host.com']

message = """\
From: fromuser@host.com
To: touser@host.com
Subject: Send mail from python!!
"""
body = '\n\nSome Text\n'
for item in data:
body = body + '{name} - {res}\n'.format(name=item['name'], res=item['res'])

message = message + body

try:
smtpObj = smtplib.SMTP('corp.host.com' )
smtpObj.sendmail(sender, receivers, message)
print "Mail sent"
except smtplib.SMTPException:
print "You can't spam. Mail sending failed!"

但是,您根本不应该手动构建消息。 Python 在 email.message 中包含各种可爱的类,用于构建消息。

import email.message

m = email.message.Message()
m['From'] = "fromuser@host.com"
m['To'] = "touser@host.com"
m['Subject'] = "Send mail from python!!"

m.set_payload("Your text only body");

现在,您可以将消息转换为字符串:

>>> m.as_string()
'To: touser@host.com\nFrom: fromuser@host.com\nSubject: Send mail from python!!\n\nyour text-only body'

我会警告你,正确处理电子邮件是一个非常庞大和复杂的话题,如果你想使用非 ascii、附件等,有一点学习曲线,你将需要使用所有email.message 库的功能,其中包含大量您应该阅读和理解的文档。

关于python - 如何使用 Python 和 SMTP 发送格式正确的电子邮件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21639321/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com