2011-09-22 108 views
8

我想編寫一個python模塊,它將數據發送到G-mail帳戶中的草稿消息。我在兩週前編寫了一個腳本,使用imaplib可以很好地工作。下面是我的模塊的簡單示例。 (我創建了一個測試電子郵件地址的人來測試這個腳本。)使用Python中的imaplib在Gmail中創建草稿消息

import imaplib 
import time 
conn = imaplib.IMAP4_SSL('imap.gmail.com', port = 993) 
conn.login('[email protected]', '123456aaa') 
conn.select('[Gmail]/Drafts') 
conn.append("[Gmail]/Drafts", '', imaplib.Time2Internaldate(time.time()), "TEST") 

它利用.append功能,但今天當我運行的模塊,它產生以下錯誤:

Traceback (most recent call last): 
    File "C:/Windows/System32/email_append_test.py", line 6, in <module> 
    conn.append("[Gmail]/Drafts", '', imaplib.Time2Internaldate(time.time()), "TEST") 
    File "C:\Python26\lib\imaplib.py", line 317, in append 
    return self._simple_command(name, mailbox, flags, date_time) 
    File "C:\Python26\lib\imaplib.py", line 1060, in _simple_command 
    return self._command_complete(name, self._command(name, *args)) 
    File "C:\Python26\lib\imaplib.py", line 895, in _command_complete 
    raise self.error('%s command error: %s %s' % (name, typ, data)) 
imaplib.error: APPEND command error: BAD ['Invalid Command'] 

正如我之前所說,此模塊之前工作。它成功地在其正文中創建了字符串爲「Test」的草稿消息。由於此腳本曾用於工作,它似乎更有可能與谷歌對G-mail帳戶IMAP功能所做的更改有關,但該錯誤似乎表明APPEND命令中有錯誤。我已經在兩臺不同的計算機上測試了python腳本,看看我的庫文件是否損壞,但仍然存在相同的錯誤。

另外,我使用Python 2.6。任何幫助表示讚賞。

回答

6

conn.append之前,添加以下內容:

import email 

然後改變conn.append行改爲:

conn.append("[Gmail]/Drafts", 
      '', 
      imaplib.Time2Internaldate(time.time()), 
      str(email.message_from_string('TEST'))) 
+2

有什麼辦法追加一個主題? –

+0

是的:(請參閱https://docs.python.org/3.5/library/email-examples.html中的EMailMessage示例) – thisch

相關問題