使用Python的imaplib在Gmail中创建草稿消息

8 投票
1 回答
5260 浏览
提问于 2025-04-17 02:52

我想写一个Python模块,用来向Gmail账户中的草稿邮件发送数据。大约两周前,我写了一个脚本,使用imaplib库,运行得非常顺利。下面是我模块的一个简化示例。(我创建了一个测试邮箱,供大家测试这个脚本。)

import imaplib
import time
conn = imaplib.IMAP4_SSL('imap.gmail.com', port = 993)
conn.login('testpythoncreatedraft@gmail.com', '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']

正如我之前所说,这个模块之前是可以正常工作的。它成功地创建了包含“测试”字样的草稿邮件。既然这个脚本以前能用,那么看起来更可能是因为谷歌对Gmail账户的IMAP功能进行了某些更改,但错误信息似乎表明APPEND命令出了问题。我在两台不同的电脑上测试了这个Python脚本,以确认我的库文件没有损坏,但错误依然存在。

另外,我使用的是Python 2.6。任何帮助都非常感谢。

1 个回答

6

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

import email

然后把 conn.append 这一行改成:

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

撰写回答