Skip to content

Instantly share code, notes, and snippets.

@b44rawat
Last active May 6, 2024 09:00
Show Gist options
  • Save b44rawat/4a0b55a7569805f232342607fa8aee99 to your computer and use it in GitHub Desktop.
Save b44rawat/4a0b55a7569805f232342607fa8aee99 to your computer and use it in GitHub Desktop.
python gmail api code for non-interruption format
import os.path
from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import InstalledAppFlow
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError
import base64
from email.message import EmailMessage
import google.auth
SCOPES = [
"https://www.googleapis.com/auth/gmail.send"
]
def main():
creds = None
if os.path.exists("token.json"):
creds = Credentials.from_authorized_user_file("token.json", SCOPES)
if not creds or not creds.valid:
if creds and creds.expired and creds.refresh_token:
creds.refresh(Request())
else:
return {
"msg": "Wrong credentials"
}, 403
try:
service = build("gmail", "v1", credentials=creds)
message = EmailMessage()
message.set_content("<h1>Hi rishi</h1>")
message["To"] = "xxxxxxxxxxx@gmail.com"
message["From"] = "xxxxxxxxxxx@gmail.com"
message["Subject"] = "Automated draft"
encoded_message = base64.urlsafe_b64encode(message.as_bytes()).decode()
create_message = {"raw": encoded_message}
send_message = (
service.users()
.messages()
.send(userId="me", body=create_message)
.execute()
)
print(f'Message Id: {send_message["id"]}')
except HttpError as error:
print(f"An error occurred: {error}")
send_message = None
return send_message
if __name__ == "__main__":
main()
import os.path
import base64
from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import InstalledAppFlow
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError
from email.message import EmailMessage
SCOPES = [
"https://www.googleapis.com/auth/gmail.send"
]
def main():
creds = None
if os.path.exists("token.json"):
creds = Credentials.from_authorized_user_file("token.json", SCOPES)
if not creds or not creds.valid:
if creds and creds.expired and creds.refresh_token:
creds.refresh(Request())
else:
flow = InstalledAppFlow.from_client_secrets_file(
"credentials.json", SCOPES
)
creds = flow.run_local_server(port=0)
with open("token.json", "w") as token:
token.write(creds.to_json())
try:
service = build("gmail", "v1", credentials=creds)
message = EmailMessage()
message.set_content("This is automated draft mail")
message["To"] = "xxxxxxxxx@gmail.com"
message["From"] = "xxxxxxxxx@gmail.com"
message["Subject"] = "Automated draft"
encoded_message = base64.urlsafe_b64encode(message.as_bytes()).decode()
create_message = {"raw": encoded_message}
send_message = (
service.users()
.messages()
.send(userId="me", body=create_message)
.execute()
)
print(f'Message Id: {send_message["id"]}')
except HttpError as error:
print(f"An error occurred: {error}")
send_message = None
return send_message
if __name__ == "__main__":
main()
{
"token": "ya29.xxx-xxxxxxx-xxxxx-xxxxxx-xxxxx-xxxxxxxxx",
"refresh_token": "1//xxxxx-xxxxx-xxxxxxxxxxx_-dA",
"token_uri": "https://oauth2.googleapis.com/token",
"client_id": "xxxxxx-xxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com",
"client_secret": "xxxxxx-xxxxxxxxxxxxxxxxxxxxx",
"scopes": [
"https://www.googleapis.com/auth/gmail.send"
],
"universe_domain": "googleapis.com",
"account": "",
"expiry": "2024-04-22T11:47:55.499989Z"
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment