2011-08-29 10 views
33

smtplibモジュールを使用して電子メールを正常に送信できました。しかし、エミールが送信されると、送信された電子メールの件名は含まれません。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(TO、FROM、メッセージ、SUBJECT)、それが "smtplib.SMTPSenderRefused" に関するエラーを与える

答えて

71

は、ヘッダーとしてそれを添付:

message = 'Subject: {}\n\n{}'.format(SUBJECT, TEXT) 

、その後:

server = smtplib.SMTP(SERVER) 
server.sendmail(FROM, TO, message) 
server.quit() 

また、標準のPythonモジュールemailを使用することを検討 - それは助けるY電子メールを作っている間にたくさん。あなたは、おそらくこのような何かにあなたのコードを変更する必要があります

+0

作品、メルシー –

2

たりする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

emailモジュールの出番だことなど、したりするsmtplibが直接対象追加をサポートしていないように見えるとMSGはすでに対象でフォーマットされることを想定してい

2

:明らか

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 import MIMEText as text ImportError:mime.textという名前のモジュールがありません – nsh

+0

@nsh - どのバージョンのPythonを使用していますか?私はこの特定のインストールで2.6.6を使用しています。 3.xではわずかに異なる場所にある可能性があります。 –

+0

私は2.4.3 – nsh

2

:から

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

4

これを試してみてください。魔法のように

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

関連する問題