2011-04-05 42 views
2

我通過python發送Gmail,但我沒有得到任何主題。我意識到我向你展示的代碼沒有任何主題,但我已經嘗試過很多變體而沒有成功。有人可以告訴我如何實施一個主題。這個主題每次都是一樣的。python郵件沒有主題通過

 fromaddr = '[email protected]' 
     toaddrs = '[email protected]' 
     msg = 'Portal Test had an error' 

     #provide gmail user name and password 
     username = 'XXXX' 
     password = 'XXXXX' 

     # functions to send an email 
     server = smtplib.SMTP('smtp.gmail.com:587') 
     server.ehlo() 
     server.starttls() 
     server.ehlo() 
     server.login(username,password) 
     server.sendmail(fromaddr, toaddrs, msg) 
     server.quit() 

回答

4

有在發出一個互聯網電子郵件2重要的一步 - 創建一個RFC-2822的消息,然後使用SMTP發送它。您正在查看SMTP部分,但並未首先創建正確的消息。這樣做比較容易證明。

>>> from email.mime.text import MIMEText 
>>> 
>>> fromaddr = '[email protected]' 
>>> toaddrs = '[email protected]' 
>>> subject = 'This is an important message' 
>>> content = 'Portal Test had an error' 
>>> 
>>> # constructing a RFC 2822 message 
... msg = MIMEText(content) 
>>> msg['From'] = fromaddr 
>>> msg['To'] = toaddrs 
>>> msg['Subject'] = subject 

一個RFC 2822的消息實在是一段文字,看起來像這樣:

>>> print msg 
From nobody Tue Apr 05 11:37:50 2011 
Content-Type: text/plain; charset="us-ascii" 
MIME-Version: 1.0 
Content-Transfer-Encoding: 7bit 
From: [email protected] 
To: [email protected] 
Subject: This is an important message 

Portal Test had an error 

有了這個,你應該能夠使用您的SMTP代碼來發送。請注意,在這兩個步驟中都會重複一些類似於和來自地址的數據。

+0

這是否在一個單獨的文本文件?電子郵件發送到一個很好,來自和身體...只是沒有主題 – fuelcell 2011-04-05 18:51:39

+0

明白了。謝謝, – fuelcell 2011-04-05 19:04:25

3

您需要填寫"Subject" header

有關如何正確執行此操作的一些示例,請參閱以下頁面:18.1.11. email: Examples。第一個或多或少的你想要的。

+0

感謝您的意見。我沒有運氣試過這個。 – fuelcell 2011-04-05 17:06:58

+1

如果您嘗試過,並且無法使用,請*發佈您的代碼。* – kindall 2011-04-05 17:23:05

+0

不知道如何在評論框中格式化 – fuelcell 2011-04-05 17:39:11