Hola Roberto Gomez,
Conectar Python con Outlook en Azure. Usando Microsoft Graph API, se puede hacer.
Asegúrate de invitar a un usuario externo a Azure Entra ID e ingresar el correo electrónico y otra información necesaria al invitar, y otorgar las aprobaciones requeridas en la cuenta personal de Outlook.
He hecho esto en mi laboratorio de pruebas. Inicialmente, creé un registro de aplicación y seleccioné el tipo de cuenta compatible como Cuentas en cualquier directorio organizativo (Cualquier inquilino de Microsoft Entra ID - Multitenant) y cuentas personales de Microsoft (por ejemplo, Skype, Xbox), y también habilité "Permitir flujos de cliente público" en Sí, dando el URI de redirección http://localhost para pruebas.
Y también proporcioné permisos de API como Delegado Mail.Read, Mail.ReadWrite, Mail.Send y otorgué el consentimiento de administrador.
Después de eso, utilicé el siguiente script de Python en VS Code. Usé "common" en lugar del ID del inquilino en la URL de autoridad para conectar una cuenta personal de Microsoft Outlook.
Se mostrará un aviso de inicio de sesión, ingrese las credenciales de Microsoft Outlook.
import requests
from msal import PublicClientApplication
print(">>> Script started")
CLIENT_ID = "<Enter App ID>"
AUTHORITY = "https://login.microsoftonline.com/common"
SCOPES = ["Mail.Read"]
app = PublicClientApplication(
client_id=CLIENT_ID,
authority=AUTHORITY
)
result = app.acquire_token_interactive(scopes=SCOPES)
if "access_token" in result:
print(">>> Access token acquired")
access_token = result["access_token"]
graph_endpoint = "https://graph.microsoft.com/v1.0/me/messages"
headers = {"Authorization": f"Bearer {access_token}"}
response = requests.get(graph_endpoint, headers=headers)
emails = response.json()
print(">>> Emails received:")
for message in emails.get("value", []):
subject = message.get("subject", "No subject")
sender = message.get("from", {}).get("emailAddress", {}).get("address", "Unknown sender")
print("Subject:", subject)
print("From:", sender)
print("-" * 40)
else:
print(" Authentication failed.")
print("Details:")
print(result)
Salida: Me he conectado correctamente y he recuperado los mensajes de la cuenta personal de Microsoft.