Programmatically Save Draft in Gmail drafts folder

北战南征 提交于 2019-12-03 17:01:27

Here's a Python script to access a Gmail account. First you need to generate an OAuth token. Download Google's xoauth.py module and run it. It will walk you through the steps. You'll get a url to obtain a verification code -- paste this into the script and it will spit out your token and secret:

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

Once you've obtained your token and secret, copy them into the Python script below. It uses xoauth.py to authenticate the IMAP client, connects to IMAP, constructs a message and drops it into the Drafts folder.

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()
ashwoods

second person to ask something similar today, Using your GMail inbox space?

you could try doing this using a python imap client: imaplib quick imaplib+python+gmail returned: http://www.mattwarren.name/2008/08/2/python-imaplib-and-gmail/

a more complicated, but doable way, is using selenium/webdriver. you can automate almost anything.

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!