【问题标题】:Python Mailer ScriptPython 邮件程序脚本
【发布时间】:2013-05-30 14:58:03
【问题描述】:

我对一个非常简单的 python 电子邮件脚本有一个奇怪的问题。脚本本身工作正常,但是当我在现有代码中(在 if 语句中)使用脚本时,它似乎将 FROM、TO、SUBJECT 和 TEXT 字段放在电子邮件正文中(不仅仅是 TEXT 字段)

脚本

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 语句中删除代码,它会正常运行,并带有正确的主题行和正确的正文。也许我遗漏了一些明显的东西?

任何帮助将不胜感激。谢谢我的朋友们。

【问题讨论】:

标签: python mailer


【解决方案1】:
    message = """\
    From: %s
    To: %s
    Subject: %s

    %s
    """ % (FROM, ", ".join(TO), SUBJECT, TEXT)

此消息在关键字FromToSubject 等之前有空格,因此这些关键字无法识别为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))

【讨论】:

  • 然后繁荣,就是这样。我知道这很简单,大坝也在网上到处找。 Unutbu,感谢您的帮助 =)
猜你喜欢
  • 1970-01-01
  • 2018-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多