【发布时间】:2011-03-18 16:37:05
【问题描述】:
最好使用 Python 或 Java,我想撰写一封电子邮件并将其保存到 gmail 草稿中,而无需用户干预,
【问题讨论】:
-
其他人正在研究这个,我也发现:libgmail.sourceforge.net 但我还没有测试过。
-
libgmail使用机械化并且不起作用。最后一次提交是在 2009 年。
最好使用 Python 或 Java,我想撰写一封电子邮件并将其保存到 gmail 草稿中,而无需用户干预,
【问题讨论】:
libgmail 使用机械化并且不起作用。最后一次提交是在 2009 年。
这是一个用于访问 Gmail 帐户的 Python 脚本。首先,您需要生成一个 OAuth 令牌。下载Google's xoauth.py module 并运行它。它将引导您完成这些步骤。您将获得一个获取验证码的 url - 将其粘贴到脚本中,它会吐出您的令牌和密码:
% python xoauth.py --generate_oauth_token --user=youremail@gmail.com
获得令牌和机密后,将它们复制到下面的 Python 脚本中。它使用xoauth.py 来验证 IMAP 客户端,连接到 IMAP,构造一条消息并将其放入 Drafts 文件夹。
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()
【讨论】:
oauth2 module 以使用 oauth 进行身份验证。有了它,您只需执行imap.authenticate(url, consumer, token) 即可,无需担心使用xoauth。
imaplib为草稿设置标签,你能给我答案吗? @samplebias
今天第二个人问类似的问题, Using your GMail inbox space?
您可以尝试使用 python imap 客户端执行此操作:imaplib 快速 imaplib+python+gmail 返回:http://www.mattwarren.name/2008/08/2/python-imaplib-and-gmail/
一种更复杂但可行的方法是使用 selenium/webdriver。您几乎可以自动化任何事情。
【讨论】: