Отправить письмо с большим вложением?

Я хочу использовать 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();

Вы можете загружать в OneDrive файлы размером более 4 МБ, но вам придется делать несколько запросов. См. этот документ: docs.microsoft.com/en-us/graph/api/…

Nafis Zaman 13.02.2019 22:55

Вы используете PHP, поэтому у вас есть веб-сервер. Можете ли вы не размещать файлы на своем веб-сервере и просто отправить ссылку для скачивания? Вы можете написать скрипт download.php, который обслуживает файл и, как только к нему обращаются/загружают, удаляет его с вашего веб-сервера.

cssyphus 14.02.2019 16:19

Ссылки для скачивания могут быть проблематичными, учитывая, как часто ИТ-отделы вбивали всем в голову «никогда не нажимайте на ссылки в электронных письмах» в течение последних нескольких лет. :)

Marc LaFleur 14.02.2019 16:35
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
3
1 158
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете загружать файлы размером более 4 МБ в OneDrive, используя Загрузить сеанс. Вместо того, чтобы отправлять весь файл сразу, сеанс загрузки позволяет отправлять файл частями. После загрузки всего файла сеанс закрывается, и файл становится доступным на Диске.

После загрузки файла в OneDrive вы можете прикрепить его к электронному письму как referenceAttachment.

Вы также можете использовать отдельные методы Создать сообщение, Обновить сообщение и Отправить сообщение вместо упрощенного sendMail. Таким образом, ваш рабочий процесс будет выглядеть примерно так:

  1. Создать сообщение (POST /users/{id}/messages):
  2. Добавить вложение (POST /users/{id}/messages/{id}/attachments)
  3. Отправить сообщение (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).

Другие вопросы по теме