Невозможно отправить исходящую электронную почту из Microsoft Graph с помощью Python — 550 5.7.708 Служба недоступнаPython

Программы на Python
Anonymous
 Невозможно отправить исходящую электронную почту из Microsoft Graph с помощью Python — 550 5.7.708 Служба недоступна

Сообщение Anonymous »

Я пытаюсь отправить электронное письмо из сценария Python с помощью Microsoft Graph API (разрешения приложения, без входа пользователя), но сообщение не доставляется внешним получателям. Вызов Graph API завершается успешно с HTTP 202 Accepted, но я получаю отчет о недоставке (NDR) со следующей ошибкой:

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

550 5.7.708 Service unavailable. Access denied, traffic not accepted from this IP.
For more information please go to http://go.microsoft.com/fwlink/?LinkId=526653 AS(7910)
Я использую поток учетных данных клиента с msal:

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

import msal, requests

CLIENT_ID = "xxxxx"
CLIENT_SECRET = "xxxxx"
TENANT_ID = "xxxxx"

app = msal.ConfidentialClientApplication(
CLIENT_ID,
authority=f"https://login.microsoftonline.com/{TENANT_ID}",
client_credential=CLIENT_SECRET
)

token = app.acquire_token_for_client(scopes=["https://graph.microsoft.com/.default"])
access_token = token.get("access_token")

email_msg = {
"message": {
"subject": "Test email",
"body": {"contentType": "Text", "content": "Hello from Python Graph API"},
"toRecipients": [{"emailAddress": {"address": "optimus_prime@yahoo.com"}}]
}
}

response = requests.post(
"https://graph.microsoft.com/v1.0/users/optimus_prime@mydomain.com/sendMail",
headers={"Authorization": f"Bearer {access_token}", "Content-Type": "application/json"},
json=email_msg
)

print(response.status_code, response.text)
Это возвращает:

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

202 Accepted
Но сообщение так и не доставляется, и появляется указанный выше отчет о недоставке.
🧩 То, что я уже пробовал
  • Проверил, что почтовый ящик может отправлять/получать вручную через Outlook ✅
  • Подтверждено разрешение Mail.Send и согласие администратора ✅
  • Код отлично работает при отправке электронных писем из Notifications@mydomain.comoptimus_prime@mydomain.com (внутренний, не исходящий) ✅
  • Проверено, что клиент не находится в обезвоженном режиме (Enable-OrganizationCustomization не требуется) ✅
  • Записи DKIM и SPF правильно настроены для домена ✅
  • Проверена политика фильтрации исходящего спама и смягчены ограничения ✅
    • Ограничить отправку внешним получателям (в час): 500.
    • Ограничить отправку внутренним получателям (в час): 1000.
    • Максимальный лимит получателей в день: 10 000.
    • Действие при превышении лимита: ограничить до следующего дня.
    • Автоматическая пересылка: контролируется системой или отключена.
    • Отправить копию подозрительного сообщения. исходящие сообщения: отключено.
    • Уведомлять, если отправитель заблокирован: группа безопасности или почтовый ящик администратора.
❓Мои вопросы
  • Что означает «трафик не принимается с этого IP-адреса» в контексте Microsoft Graph/Exchange Online?
  • Нужно ли мне настраивать что-либо еще в Exchange Online Protection (EOP) или Defender для Office 365, чтобы разрешить исходящую отправку на основе Graph?
  • Связано ли это с тем, что мой клиент новый (пробный период) или с низкой репутацией, и если да, то как я могу попросить Microsoft разблокировать его?
  • Нужны ли дополнительные действия, чтобы включить отправку приложений на основе Graph из учетных записей служб (неинтерактивные, разрешения приложений)?
✅ Действие принято
Я обратился в службу поддержки клиентов Microsoft; однако представитель подтвердил, что он не сможет помочь, пока я могу отправлять электронные письма из Outlook. Представитель порекомендовал обратиться в единую службу поддержки Microsoft, которая стоит дорого — это мой личный учебный проект!
🧠 Ожидаемый результат
Электронные письма, отправленные через Microsoft Graph /sendMail, должны успешно доставляться на внешние домены (например, Yahoo, Gmail) и не блокироваться защитой исходящих сообщений Microsoft.

Подробнее здесь: https://stackoverflow.com/questions/798 ... 5-7-708-se

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