Как отправить электронную почту с помощью 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