程序化保存草稿到Gmail草稿文件夹

5 投票
2 回答
4848 浏览
提问于 2025-04-16 13:58

我想用Python或Java来写一封邮件,并把它保存到Gmail的草稿箱里,而且不需要用户手动操作。

2 个回答

1

今天第二个人问了类似的问题,如何使用你的GMail邮箱空间?

你可以试试用Python的imap客户端:imaplib。快速查找一下imaplib+python+gmail的信息,可以看看这个链接:http://www.mattwarren.name/2008/08/2/python-imaplib-and-gmail/

还有一种更复杂但可行的方法,就是使用selenium/webdriver。这样你几乎可以自动化任何操作。

9

这里有一个Python脚本,可以用来访问你的Gmail账户。首先,你需要生成一个OAuth令牌。下载Google的xoauth.py模块并运行它。这个工具会一步一步指导你完成操作。你会得到一个网址,用来获取一个验证代码——把这个代码粘贴到脚本里,它就会给你生成令牌和密钥:

% python xoauth.py --generate_oauth_token --user=youremail@gmail.com

一旦你得到了令牌和密钥,把它们复制到下面的Python脚本中。这个脚本使用xoauth.py来验证IMAP客户端,连接到IMAP服务器,构建一条消息,并将其放入草稿箱。

import email.message
import imaplib
import random
import time
import xoauth

MY_EMAIL = 'youremail@gmail.com'
MY_TOKEN = '<token>'
MY_SECRET = '<secret>'

# construct the oauth access token
nonce = str(random.randrange(2**64 - 1))
timestamp = str(int(time.time()))
consumer = xoauth.OAuthEntity('anonymous', 'anonymous')
access = xoauth.OAuthEntity(MY_TOKEN, MY_SECRET)
token = xoauth.GenerateXOauthString(
    consumer, access, MY_EMAIL, 'imap', MY_EMAIL, nonce, timestamp)

# connect to gmail's imap service.
imap = imaplib.IMAP4_SSL('imap.googlemail.com')
imap.debug = 4
imap.authenticate('XOAUTH', lambda x: token)

# create the message
msg = email.message.Message()
msg['Subject'] = 'subject of the message'
msg['From'] = MY_EMAIL
msg['To'] = MY_EMAIL
msg.set_payload('Body of the message')

# append the message to the drafts folder
now = imaplib.Time2Internaldate(time.time())
imap.append('[Gmail]/Drafts', '', now, str(msg))

imap.logout()

撰写回答