Python 缩进导致在方法中发送电子邮件时出现问题
我正在尝试使用Pythion smtp库发送电子邮件。我有下面的代码,但不知怎的,当我收到一封电子邮件时,它没有Python 缩进导致在方法中发送电子邮件时出现问题,python,smtp,Python,Smtp,我正在尝试使用Pythion smtp库发送电子邮件。我有下面的代码,但不知怎的,当我收到一封电子邮件时,它没有“To”,“Subject”和“Body”内容,因为它们丢失了。我认为消息字符串的构造方式有问题 import smtplib import socket FROM = "from@host.com" TO = ["to@host.com"] def send_email(): hostname = socket.getfqdn() text = "Hello"
“To”
,“Subject”
和“Body”
内容,因为它们丢失了。我认为消息
字符串的构造方式有问题
import smtplib
import socket
FROM = "from@host.com"
TO = ["to@host.com"]
def send_email():
hostname = socket.getfqdn()
text = "Hello"
subject = "Error on %s " % (hostname)
print subject
# Prepare actual message
message = """\
From: %s
To: %s
Subject: %s
%s
""" % (FROM, ", ".join(TO), subject, text)
smtp_server = ""
if ".dev" not in hostname:
smtp_server = "abc.host.com"
else:
smtp_server = "pqr.host.com"
# Send the mail
server = smtplib.SMTP(smtp_server)
server.sendmail(FROM, TO, message)
server.quit()
send_email()
但是,当我使用完全相同的下面的代码时,它工作得很好,没有任何问题,所以我确信当我把所有东西都放在一个方法中时,上面的代码有问题。我相信缩进会导致消息字符串的构造方式出现问题,或者其他一些我无法理解的问题
import smtplib
import socket
SERVER = "abc.host.com"
FROM = "from@host.com"
TO = ["to@host.com"]
SUBJECT = "Test! %s " % (socket.getfqdn())
TEXT = "Testing."
# Prepare actual message
message = """\
From: %s
To: %s
Subject: %s
%s
""" % (FROM, ", ".join( TO), SUBJECT, TEXT)
# Send the mail
server = smtplib.SMTP(SERVER)
server.sendmail(FROM, TO, message)
server.quit()
下面是我看到的第一个代码。如果您仔细观察,与第二个代码打印出来的内容相比,每个标签前面都有很多空格:
From: from@host.com
To: to@host.com
Subject: Error on machineA
Hello
From: from@host.com
To: to@host.com
Subject: Test! machineA
Testing.
这是我在第二个代码中看到的:
From: from@host.com
To: to@host.com
Subject: Error on machineA
Hello
From: from@host.com
To: to@host.com
Subject: Test! machineA
Testing.
当我将它放入一个方法中时,如何在第一个代码中修复它
更新:
我试过使用下面的代码,但它给出了一个错误,即打印消息上的缩进错误
import smtplib
import socket
FROM = "from@host.com"
TO = ["to@host.com"]
def send_email():
hostname = socket.getfqdn()
text = "Hello"
subject = "Error on %s " % (hostname)
print subject
# Prepare actual message
message = """\
From: %s
To: %s
Subject: %s
%s
""" % (FROM, ", ".join(TO), subject, text)
print message
smtp_server = ""
if ".dev" not in hostname:
smtp_server = "abc.host.com"
else:
smtp_server = "pqr.host.com"
# Send the mail
server = smtplib.SMTP(smtp_server)
server.sendmail(FROM, TO, message)
server.quit()
send_email()
您可以删除缩进:
def send_email():
# stuff ...
# Prepare actual message
message = """\
From: %s
- other stuff...
""" % (FROM, ", ".join(TO), subject, text)
smtp_server = ""
# more stuff...
server.sendmail(FROM, TO, message)
server.quit()
另外,不确定是否需要反斜杠
message = ''' < == no backslash
stuff
'''
message=''<==无反斜杠
东西
'''
使用stdlib电子邮件
包帮助您将邮件构建为正确的SMTP有效负载(邮件头、编码、部分等)
标准文档或stackoverflow中有大量示例。函数中的文字“三引号”字符串包括缩进。我根据您的建议更新了我的问题,但编译时缩进出现错误?我更新的代码有什么问题吗?听起来字符串还是有问题。