Как отправить электронную почту с помощью python и рабочего пространства google

Я только что подписался на Google workspace business starter из-за множества рекомендаций от людей, я хотел бы знать, насколько возможно отправлять электронную почту через мой бэкенд API с помощью Django, я искал это в Интернете, но ничего исчерпывающего или прямого, пытался связаться с их поддержкой, но она не доступна. Заранее спасибо

from google.oauth2 import service_account
from googleapiclient.discovery import build

SERVICE_ACCOUNT_FILE= 'path_to_your_json_credential_file'
DELEGATE='youremail@yourcompany.com'  # The service account will impersonate this user. The service account must have proper admin privileges in G Workspace.
SCOPES = ['https://mail.google.com/'] # ... or whatever scope(s) you need for your purpose
    




def connect_to_gmail():
    credentials = service_account.Credentials.from_service_account_file(SERVICE_ACCOUNT_FILE, scopes=SCOPES)
    credentials_delegated = credentials.with_subject(DELEGATE)
    gmail = build('gmail', 'v1', credentials=credentials_delegated)

    # do whatever you need with it, check the exemple below :
    # new_msg_history_lst = gmail.users().history().list(userId='me',maxResults=3, startHistoryId='1', labelId='INBOX').execute()
    # print(new_msg_history_lst)

    return gmail



 def gmail_send_message(gmail): # not sure it works properly but it's a start for you
        import base64
        from email.message import EmailMessage
        from googleapiclient.errors import HttpError
    
        try:
            message = EmailMessage()
            message.set_content('This is automated draft mail')
            message['To'] = 'receiver@email.com'
            message['From'] = 'your@email.com'
            message['Subject'] = 'Automated draft'
    
            # encoded message
            encoded_message = base64.urlsafe_b64encode(message.as_bytes()) \
                .decode()
    
            create_message = {
                'raw': encoded_message
            }
            
            send_message = gmail.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

Для того чтобы приведенный выше код работал, необходимо, чтобы :

  • учетная запись является учетной записью google workspace
  • вы создали учетную запись службы, создали ключи для нее и загрузили их в формате json
  • вы добавили делегирование Domain Wide для учетной записи службы, и добавили к ней по крайней мере те же области действия, что и в вышеуказанных
  • .
  • вы включили Gmail API
Вернуться на верх