Я хочу использовать API графа для отправки электронных писем с большими вложениями (до 20 МБ). Есть ли способ отправлять электронные письма с большими вложениями?
Предыдущие попытки с Graph привели к обнаружению ограничения на загрузку в 4 МБ. В качестве альтернативы я также рассматривал возможность загрузки файла в OneDrive и прикрепления его по ссылке, но я считаю, что это упирается в то же ограничение в 4 МБ.
Это ограничение исключает использование Microsoft Graph.
Я слышал, что устаревший API REST Outlook может обрабатывать загрузку больших файлов, однако сегодня я не могу найти способ получить доступ к API REST Outlook, похоже, что он устарел. Кроме того, вся документация, которую я читал в Microsoft, очень быстро побуждает вас использовать новый Graph API.
Глядя на портал Azure, кажется, что нет возможности разрешить моему приложению пройти аутентификацию в API Outlook, это нигде не вариант.
Для справки здесь приведен соответствующий фрагмент, который я использовал с Graph API.
$mailBody = ...
'attachments' => [
[
'@odata.type' => '#microsoft.graph.fileAttachment',
'Name' => 'file.docx',
'ContentBytes' => $localFile
]
]
...
$response = $this->getGraph()->createRequest("POST", "/users/{primary-user}/sendMail")
->attachBody($mailBody)
->execute();
Вы используете PHP, поэтому у вас есть веб-сервер. Можете ли вы не размещать файлы на своем веб-сервере и просто отправить ссылку для скачивания? Вы можете написать скрипт download.php, который обслуживает файл и, как только к нему обращаются/загружают, удаляет его с вашего веб-сервера.
Ссылки для скачивания могут быть проблематичными, учитывая, как часто ИТ-отделы вбивали всем в голову «никогда не нажимайте на ссылки в электронных письмах» в течение последних нескольких лет. :)






Вы можете загружать файлы размером более 4 МБ в OneDrive, используя Загрузить сеанс. Вместо того, чтобы отправлять весь файл сразу, сеанс загрузки позволяет отправлять файл частями. После загрузки всего файла сеанс закрывается, и файл становится доступным на Диске.
После загрузки файла в OneDrive вы можете прикрепить его к электронному письму как referenceAttachment.
Вы также можете использовать отдельные методы Создать сообщение, Обновить сообщение и Отправить сообщение вместо упрощенного sendMail. Таким образом, ваш рабочий процесс будет выглядеть примерно так:
POST /users/{id}/messages):POST /users/{id}/messages/{id}/attachments)POST /users/{id}/messages/{id}/send)Существует распространенное заблуждение, что API REST Outlook полностью отличается от API Microsoft Graph. Хотя, безусловно, есть некоторые функции Outlook REST API, которые еще не представлены в Graph, за кулисами они представляют собой один и тот же API.
Microsoft Graph на самом деле является агрегатором API, а не самим API (бесполезные мелочи: Graph часто называют аббревиатурой AGS для «Службы агрегатора»). Для базовых вызовов Graph просто направляет вызов базовому API и переписывает ответ в нормализованном формате OData. Где Graph становится интересным, так это в более сложных вызовах, когда он может выполнять такие действия, как маршрутизация вызовов к нескольким базовым API, а затем объединять результаты вместе.
Если вам интересно, что он делает, вы можете добавить ?whatif к своему вызову, и Graph также вернет базовую рабочую нагрузку, которую он маршрутизирует, вместо фактических результатов (например, https://graph.microsoft.com/v1.0/me?whatif).
Вы можете загружать в OneDrive файлы размером более 4 МБ, но вам придется делать несколько запросов. См. этот документ: docs.microsoft.com/en-us/graph/api/…