Как я могу отправить электронное письмо из своей системной учетной записи (у меня есть имя и пароль) из приложения CloudPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как я могу отправить электронное письмо из своей системной учетной записи (у меня есть имя и пароль) из приложения Cloud

Сообщение Anonymous »

Сегодня я весь день боролся с OAuth и MSAL в Python. У меня простое приложение, пользователи заполняют мою форму, нажимают кнопку «Отправить», а затем я записываю их данные в базу данных. Я хочу отправить им электронное письмо со словами: «Я записал ваши данные в базу данных». Я хочу, чтобы это письмо пришло из моей системной учетной записи, которая является учетной записью AZAD.
Я чувствую, что мне следует это сделать. можно каким-то образом получить токен для взаимодействия с графическим API, используя ТОЛЬКО имя и пароль, а затем отправить электронное письмо. Однако я продолжаю натыкаться на стены.
Я не могу заставить администратора моего приложения просто отправлять электронную почту от имени ЛЮБОГО пользователя. Все, что я пытаюсь сделать, это отправить электронное письмо со своей системной учетной записи. Я МОГУ сделать это вручную в приложении Outlook на своем рабочем столе, но не могу сделать это из своей среды разработки Python.
Я хочу сделать это, если возможно, с использованием HTTP-запросов

Код: Выделить всё

import requests_oauthlib
from requests_oauthlib import OAuth2Session
from oauthlib.oauth2 import LegacyApplicationClient
tenant_id = tid
client_id = cid
client_secret = cs
uri =f"https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/token"
username=un
password=pw

#DOES NOT WORK says the user account doesn't exist
oauth = OAuth2Session(client=LegacyApplicationClient(client_id=client_id))
token = oauth.fetch_token(
token_url=uri
,client_id=client_id
,client_secret=client_secret
,username=username
,password=password
,scope="Mail.Send"
)

#THIS DOES WORK BUT I CANT GET IT TO EMAIL
client = BackendApplicationClient(client_id=client_id)
oauth = OAuth2Session(client=client)
token = oauth.fetch_token(
token_url=uri
,client_id=client_id
,client_secret=client_secret
,scope=["https://graph.microsoft.com/.default"]
)

recipient='[email protected]'
subject="test_subject"
body="test_body"
request_body = {
'message': {
# recipient list
'toRecipients': [
{
'emailAddress': {
'address': recipient
}
}
],
# email subject
'subject': subject,
"body": {
"contentType": "html",
"content": body
},
'importance': 'normal',

}
}
headers = {
'Authorization': 'Bearer ' + token['access_token']
}

GRAPH_ENDPOINT = 'https://graph.microsoft.com/v1.0'
endpoint = GRAPH_ENDPOINT + '/me/sendMail'

response = requests.post(endpoint, headers=headers, json=request_body)
response.raise_for_status()  # Raise an exception if request fails

if response.status_code == 202:
print(f"Email sent to: {recipient}")
else:
print(f"Email not sent to: {recipient}")

Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/791 ... sword-from
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»