Is simple to do with python. The script I make is simple without classes.
Let’s start with the first steps:
You need to create your project and then one credential with a json file.
See the next image to see how is your JSON file. My JSON file is renamed to client_secret.json and is used by a python script.
The JSON file is into the same folder with my python script.
After the first run, the script will make one json file named: gmail-python-quickstart.json.
Is a simple way to get and put credentials to solve authentification to google.
Another step is to add the GMail API library to your project. This allows you to use the functions from the Gmail API.
The python script is very simple to do. Follow the part of this script.
Is need to use some python modules. One reason is to deal with email format, see email python module.
Some python modules are used to make authentication to google: oauth2client and apiclient.
I used argparse python module but is no need to add arguments to the script.
The result of this script will send an email to your@yahoo.com.
The email is created by CreateMessage function.
About the special value “me” that comes from Google API and is for the user.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 | from __future__ import print_function import httplib2 import os import base64 import email from email.mime.text import MIMEText from apiclient import discovery import oauth2client from oauth2client import client from oauth2client import tools try: import argparse flags = argparse.ArgumentParser(parents=[tools.argparser]).parse_args() except ImportError: flags = None SCOPES = "https://mail.google.com/" CLIENT_SECRET_FILE = 'client_secret.json' APPLICATION_NAME = 'Gmail API Python Quickstart' def get_credentials(): """Gets valid user credentials from storage. If nothing has been stored, or if the stored credentials are invalid, the OAuth2 flow is completed to obtain the new credentials. Returns: Credentials, the obtained credential. """ home_dir = os.path.expanduser('~') credential_dir = os.path.join(home_dir, '.credentials') if not os.path.exists(credential_dir): os.makedirs(credential_dir) credential_path = os.path.join(credential_dir, 'gmail-python-quickstart.json') store = oauth2client.file.Storage(credential_path) credentials = store.get() if not credentials or credentials.invalid: flow = client.flow_from_clientsecrets(CLIENT_SECRET_FILE, SCOPES) flow.user_agent = APPLICATION_NAME if flags: credentials = tools.run_flow(flow, store, flags) else: # Needed only for compatibility with Python 2.6 credentials = tools.run(flow, store) print('Storing credentials to ' + credential_path) return credentials # create a message def CreateMessage(sender, to, subject, message_text): """Create a message for an email. Args: sender: Email address of the sender. to: Email address of the receiver. subject: The subject of the email message. message_text: The text of the email message. Returns: An object containing a base64 encoded email object. """ message = MIMEText(message_text) #message = message_text message['to'] = to message['from'] = sender message['subject'] = subject return {'raw': base64.b64encode(message.as_string())} #send message def SendMessage(service, user_id, message): """Send an email message. Args: service: Authorized Gmail API service instance. user_id: User's email address. The special value "me" can be used to indicate the authenticated user. message: Message to be sent. Returns: Sent Message. """ try: message = (service.users().messages().send(userId=user_id, body=message).execute()) print ('Message Id: %s' % message['id']) return message except errors.HttpError, error: print ('An error occurred: %s' % error) def main(): """ Shows basic usage of the Gmail API. Send a mail using gmail API """ credentials = get_credentials() http = credentials.authorize(httplib2.Http()) service = discovery.build('gmail', 'v1', http=http) msg_body = "test message" message = CreateMessage("your@yahoo.com", "your@yahoo.com", "Subject of email", msg_body) SendMessage(service, "me", message) if __name__ == '__main__': main() |