Last active
August 3, 2023 13:21
-
-
Save WJDigby/e36203102a195797c712c6cfe5020b21 to your computer and use it in GitHub Desktop.
python3 send email via gmail API
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I used
from googleapiclient.errors import HttpError
except HttpError as error: