我想用Pythion smtp庫發送電子郵件。我得到了下面的代碼,但不知何故,當我收到一封電子郵件時,它缺少"To"
,"Subject"
和"Body"
內容。我相信構造字符串message
的方式有些問題。縮進導致問題,同時發送電子郵件的方法
import smtplib
import socket
FROM = "[email protected]"
TO = ["[email protected]"]
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 = "[email protected]"
TO = ["[email protected]"]
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: [email protected]
To: [email protected]
Subject: Error on machineA
Hello
這是我第二個代碼中看到:
From: [email protected]
To: [email protected]
Subject: Test! machineA
Testing.
怎麼辦當我將它放入方法中時,我在第一個代碼中解決了這個問題?
更新:
我用下面的代碼嘗試,但它給了我錯誤關於縮進是錯誤的print message
。
import smtplib
import socket
FROM = "[email protected]"
TO = ["[email protected]"]
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()
函數中的字面'三引號'字符串包含縮進。 – quamrana