Python:使用smtplib模块发送电子邮件时未显示“主题”
我成功地能够使用smtplib模块发送电子邮件。但是,当emial发送时,它不包括发送电子邮件中的主题。Python:使用smtplib模块发送电子邮件时未显示“主题”
import smtplib
SERVER = <localhost>
FROM = <from-address>
TO = [<to-addres>]
SUBJECT = "Hello!"
message = "Test"
TEXT = "This message was sent with Python's smtplib."
server = smtplib.SMTP(SERVER)
server.sendmail(FROM, TO, message)
server.quit()
我应该如何编写“server.sendmail”以在发送的电子邮件中包含SUBJECT。
如果我使用,server.sendmail(发件人,收件人,邮件,分科),它提供了错误关于 “smtplib.SMTPSenderRefused”
附上它作为一个标题:
message = 'Subject: {}\n\n{}'.format(SUBJECT, TEXT)
然后:
server = smtplib.SMTP(SERVER)
server.sendmail(FROM, TO, message)
server.quit()
还要考虑使用标准Python模块email
- 这将有助于ÿ在撰写电子邮件时你会做很多事情。
见注在的smtplib文档的底部:
In general, you will want to use the email package’s features to construct an email message, which you can then convert to a string and send via sendmail(); see email: Examples.
下面是email
文档的示例部分的链接,它确实显示了创建带有主题行的消息。 http://docs.python.org/library/email-examples.html#email-examples
看来的smtplib并不直接支持主题此外,预计味精已与一个主题,等等。这是在email
模块采用格式化
你或许应该修改代码以这样的事:
from smtplib import SMTP as smtp
from email.mime.text import MIMEText as text
s = smtp(server)
s.login(<mail-user>, <mail-pass>)
m = text(message)
m['Subject'] = 'Hello!'
m['From'] = <from-address>
m['To'] = <to-address>
s.sendmail(<from-address>, <to-address>, m.as_string())
显然,<>
变量必须是实际的字符串值,或者有效的变量,我只是填补他们的占位符。这适用于发送带有主题的邮件。
我认为你必须包括它的消息中:
import smtplib
message = """From: From Person <[email protected]>
To: To Person <[email protected]>
MIME-Version: 1.0
Content-type: text/html
Subject: SMTP HTML e-mail test
This is an e-mail message to be sent in HTML format
<b>This is HTML message.</b>
<h1>This is headline.</h1>
"""
try:
smtpObj = smtplib.SMTP('localhost')
smtpObj.sendmail(sender, receivers, message)
print "Successfully sent email"
except SMTPException:
print "Error: unable to send email"
代码:http://www.tutorialspoint.com/python/python_sending_email.htm
一个观察:例如,from,to和subject字段必须位于变量“message”的VERY BEGINNING中,否则字段将不会被解释为它必须是预期。我有插入“主题”字段的经验,而不是在变量的开头,并且邮件没有主题地来到接收者的邮箱。干杯。 – ivanleoncz
试试这个:
import smtplib
from email.mime.multipart import MIMEMultipart
msg = MIMEMultipart()
msg['From'] = 'sender_address'
msg['To'] = 'reciver_address'
msg['Subject'] = 'your_subject'
server = smtplib.SMTP('localhost')
server.sendmail('from_addr','to_addr',msg.as_string())
的作品就像一个魅力,MERCI –