对于一个非常简单的python电子邮件脚本,我有一个奇怪的问题。脚本本身运行良好,但是当我在现有代码中(在if语句中)使用脚本时,它似乎将FROM、TO、SUBJECT和文本字段放在电子邮件正文中(而不仅仅是文本字段)
脚本
import smtplib
SERVER = "localhost"
FROM = "test@test.com"
TO = ["myemail@email.com"] # must be a list
SUBJECT = "Test"
TEXT = "This message was sent with Python's smtplib."
message = """\
From: %s
To: %s
Subject: %s
%s
""" % (FROM, ", ".join(TO), SUBJECT, TEXT)
server = smtplib.SMTP(SERVER)
server.sendmail(FROM, TO, message)
server.quit()当我将它包装在一个If语句中时,它会变得混乱,并将所有内容都放入电子邮件正文中。
if X == 1:
import smtplib
SERVER = "localhost"
FROM = "test@test.com"
TO = ["myemail@email.com"] # must be a list
SUBJECT = "Test"
TEXT = "This message was sent with Python's smtplib."
message = """\
From: %s
To: %s
Subject: %s
%s
""" % (FROM, ", ".join(TO), SUBJECT, TEXT)
server = smtplib.SMTP(SERVER)
server.sendmail(FROM, TO, message)
server.quit()
else:
continue这将给我一封如下所示的邮件
From - test@test.com
Subject -
To - undisclosed-recipients
From: test@test.com
To: myemail@email.com
Subject: Hello!
This message was sent with Python's smtplib.如前所述,如果我从If语句中删除代码,它就会正常运行,并包含正确的主题行和正文。也许我遗漏了一些明显的东西?
任何帮助都将不胜感激。谢谢我的朋友们。
发布于 2013-05-30 14:49:58
message = """\
From: %s
To: %s
Subject: %s
%s
""" % (FROM, ", ".join(TO), SUBJECT, TEXT)此邮件的关键字From、To、Subject等前有空格,因此这些关键字不会被识别为header field names。因此,所有这些都将成为消息正文的一部分。
要解决此问题,请删除文本:
message = """\
From: %s
To: %s
Subject: %s
%s
""" % (FROM, ", ".join(TO), SUBJECT, TEXT)或者,为了保持缩进的可读性,
import textwrap
if X == 1:
message = textwrap.dedent("""\
From: %s
To: %s
Subject: %s
%s
""" % (FROM, ", ".join(TO), SUBJECT, TEXT))https://stackoverflow.com/questions/16829582
复制相似问题