2011-09-22 109 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

相关问题