-
-
Save WJDigby/e36203102a195797c712c6cfe5020b21 to your computer and use it in GitHub Desktop.
| from apiclient.discovery import build | |
| from apiclient import errors | |
| from httplib2 import Http | |
| from oauth2client import file, client, tools | |
| from email.mime.text import MIMEText | |
| from base64 import urlsafe_b64encode | |
| SENDER = <sender> | |
| RECIPIENT = <recipient> | |
| SUBJECT = <subject> | |
| CONTENT = <content> | |
| SCOPE = 'https://www.googleapis.com/auth/gmail.compose' # Allows sending only, not reading | |
| # Initialize the object for the Gmail API | |
| # https://developers.google.com/gmail/api/quickstart/python | |
| store = file.Storage('credentials.json') | |
| creds = store.get() | |
| if not creds or creds.invalid: | |
| flow = client.flow_from_clientsecrets('client_secret.json', SCOPE) | |
| creds = tools.run_flow(flow, store) | |
| service = build('gmail', 'v1', http=creds.authorize(Http())) | |
| # https://developers.google.com/gmail/api/guides/sending | |
| def create_message(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 base64url encoded email object. | |
| """ | |
| message = MIMEText(message_text) | |
| message['to'] = to | |
| message['from'] = sender | |
| message['subject'] = subject | |
| encoded_message = urlsafe_b64encode(message.as_bytes()) | |
| return {'raw': encoded_message.decode()} | |
| # https://developers.google.com/gmail/api/guides/sending | |
| def send_message(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: | |
| except: | |
| print('An error occurred: %s' % error) | |
| raw_msg = create_message(SENDER, RECIPIENT, SUBJECT, CONTENT) | |
| send_message(service, "me", raw_msg) |
Thanks for this; it helped me with creating the message body.
Hello, please I really need help with implementing this most especially, what really is "Authorized Gmail API service instance"? Can someone please give me a simple answer because I have searched even Google API doc still uses that term without explaining and answers from stackoverflow isn't helpful either... And I get "no module named oauth2client" though I followed this https://developers.google.com/gmail/api/quickstart/python
Yes I was authenticated successfully, but trying to send mail with the code hosted above isn't working. Any help please, thanks.
Were you able to figure it out @Mgregchi ?
I used
from googleapiclient.errors import HttpError
except HttpError as error:
Uncomment line 64 to specifically catch an
errors.HttpErroror change line 66 to:print('An error occurred')