Python:使用smtplib模块发送电子邮件时未显示“主题”

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 - 这将有助于ÿ在撰写电子邮件时你会做很多事情。

+0

的作品就像一个魅力,MERCI –

见注在的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()) 

显然,<>变量必须是实际的字符串值,或者有效的变量,我只是填补他们的占位符。这适用于发送带有主题的邮件。

+0

我收到以下错误:from email.mime.text将MIMEText导入为文本 ImportError:没有名为mime.text的模块 – nsh

+0

@nsh - 使用什么版本的Python?我在这个特定的安装上使用2.6.6。 3.x完全有可能在一个稍微不同的地方。 –

+0

我正在使用2.4.3 – nsh

我认为你必须包括它的消息中:

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

+0

一个观察:例如,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()) 
+2

信息的主体呢?那去哪了? – Dss

+2

我结束了这个以放在正文中https://docs.python.org/2/library/email-examples.html#id5 – Nico