2011-08-29 12 views
33

का उपयोग कर ईमेल भेजते समय "विषय" नहीं दिखाया गया है, मैं smtplib मॉड्यूल का उपयोग कर ईमेल भेजने में सफलतापूर्वक सक्षम हूं। लेकिन जब इमियल भेजा जाता है, तो इसमें भेजे गए ईमेल में विषय शामिल नहीं होता है।पायथन: 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" कैसे लिख भेजे गए ईमेल में रूप में अच्छी तरह विषय शामिल करने के लिए करना चाहिए।

अगर मैं का उपयोग करें, server.sendmail (से,, संदेश, विषय), यह त्रुटि "smtplib.SMTPSenderRefused"

उत्तर

71

एक हेडर के रूप में यह संलग्न करें:।

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

और उसके बाद:

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

इसके अलावा मानक पायथन मॉड्यूल email उपयोग करने पर विचार - यह मदद मिलेगी y ईमेल लिखते समय बहुत कुछ कहां।

+0

काम करता है, merci –

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

ऐसा नहीं है कि smtplib प्रकट होता है सीधे विषय इसके अलावा समर्थन नहीं करता है और उम्मीद करता है संदेश पहले से ही एक विषय, आदि वहीं email मॉड्यूल में आता है के साथ स्वरूपित किया जाना

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

मैं हो रही है

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" 

कोड से निम्न त्रुटि: email.mime.text आयात से MIMEText को पाठ के रूप में आयात त्रुटि: कोई मॉड्यूल mime.text नाम नहीं है – nsh

+0

@nsh - पायथन के किस संस्करण के साथ? मैं इस विशेष इंस्टॉल पर 2.6.6 का उपयोग कर रहा हूं। यह पूरी तरह से संभव है कि यह 3.x में थोड़ा अलग जगह पर है। –

+0

मैं 2.4.3 – nsh

2

मुझे लगता है कि आप संदेश में शामिल करने के लिए है: यह कोशिश http://www.tutorialspoint.com/python/python_sending_email.htm

+0

का उपयोग कर रहा हूं एक अवलोकन: से, और विषय फ़ील्ड, उदाहरण के लिए, चर "संदेश" के बहुत ही प्रारंभ में होना चाहिए, उदाहरण के लिए, या अन्यथा, फ़ील्ड का अर्थ नहीं लिया जाएगा क्योंकि यह होना चाहिए अपेक्षित होना। मुझे "विषय" फ़ील्ड डालने का अनुभव था, न कि चर की शुरुआत में, और संदेश किसी भी विषय के साथ रिसीवर के मेलबॉक्स में आया था। चीयर्स। – 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