Отправить ссылочное вложение на электронную почту через Graph API - PullRequest
0 голосов
/ 05 июня 2018

Graph API имеет ограничение в 4 МБ, поэтому, если я хочу отправить электронное письмо с вложением 10 МБ, я не могу использовать тип FileAttachment.Насколько я понимаю, рекомендуемый способ сделать это с ReferenceAttachment, который несет ссылку на файл, который был загружен в OneDrive (который принимает большие полезные нагрузки).Однако, когда я делаю это, я вижу ReferenceAttachment в отправленных элементах (и могу загрузить его без изменений), но вложение отсутствует в месте назначения (Gmail или Outlook).

Я звоню beta API, использующий этот URL:

https://graph.microsoft.com/beta/users/USERNAME/microsoft.graph.sendMail

Публикуемый контент:

{
  "saveToSentItems": true,
  "message": {
    "attachments": [
      {
        "sourceUrl": "https://100255-my.sharepoint.com/personal/USERNAME/Documents/sent-attachments/largefile.txt_6T7sHv5E",
        "permission": "view",
        "providerType": "oneDriveConsumer",
        "name": "largefile.txt",
        "contentType": "text/plain",
        "@odata.type": "#microsoft.graph.referenceAttachment"
      }
    ],
    "subject": "Test E-Mail",
    "toRecipients": [
      {
        "emailAddress": {
          "address": "me@gmail.com"
        }
      }
    ]
  }
}

Как мне убедиться, что получатель электронной почты получает вложение?

РЕДАКТИРОВАТЬ: Когда я использую providerType: onDriveBusiness, я получаю немного дальше.Я получаю в gmail неразборчивое двоичное вложение (winmail.dat или noname) с основным и вторым электронным письмом со ссылкой, в которой предлагается открыть учетную запись в Microsoft, чтобы я мог просмотреть общий файл.Тема второго письма:

USERNAME wants to share the file largefile.txt_6T7sHv5E with you

Обратите внимание, что это то, что происходит с Gmail.Когда я использую клиент Outlook в Windows, подключенный к Exchange, я не получаю ни вложение, ни второе электронное письмо.Юк!

Что за обманщик!Мой бизнес (Search and Rescue) не примет этот API с явными препятствиями для получателя электронной почты!Могу ли я восстановить полную электронную почту как одну без непонятных двоичных вложений и без создания учетных записей в Microsoft?

Ответы [ 2 ]

0 голосов
/ 11 июня 2019

Кто-нибудь знает, какие есть варианты для providerType помимо OneDrive?Не могу найти документацию.Интересно, поддерживает ли он хранилище BLOB-объектов Azure.

0 голосов
/ 05 июля 2018

DISCLAMER : Я начал писать ответ и когда на последнем шаге понял, что это не решает проблему.Решил оставить его в ознакомительных целях.По крайней мере, он приходит к выводу, что конечная точка /messages/{messageID}/send также содержит ошибки.

Чтение API графика Документация заставляет меня предложить следующие шаги для достижения того, что вы ищете:

  1. Создайте черновик сообщения, используя POST запрос к https://graph.microsoft.com/beta/me/messages с полезной нагрузкой:

    {
        "subject": "TestMessage",
        "toRecipients": [
            {
                "emailAddress":{
                    "address":"egor-mailbox@ya.ru"
                }
            }
        ],
        "body": {
            "contentType": "html",
            "content": "<b>Hello!</b>"
        }
    },
    

    В ответ вы получите всю структуру сообщения с id, настроенной на что-то вроде AQMkADAwATMwMAItMTJkYi03YjFjLTAwAi0wMAoARgAAA_hRKmxc6QpJks9QJkO5R50HAP6mz4np5UJHkvaxWZjGproAAAIBDwAAAP6mz4np5UJHkvaxWZjGproAAAAUZT2jAAAA,Обратимся к нему как {messageID}. ПРИМЕЧАНИЕ : как вы можете видеть, я прошел тело с html-типом.Это необходимо, потому что (по крайней мере, в GraphAPI Explorer) graph api возвращает ошибку в случае, если вы пытаетесь добавить ссылочное вложение к сообщению с не-html типом содержимого тела.

  2. После этого выможете создать вложение, используя POST запрос к https://graph.microsoft.com/beta/me/messages/{messageID}/attachments

    {
        "@odata.type": "#microsoft.graph.referenceAttachment",
        "name": "AttachmentName",
        "sourceUrl": "https://1drv.ms/u/s!ASDLKASDLASHDLASKDLJAXCXZ_DASD",
        "providerType": "oneDriveConsumer",
        "isFolder": false
    }
    
  3. После шага 2 вы увидите созданное сообщение в папке вашего почтового ящика Drafts.Чтобы отправить его, используйте https://graph.microsoft.com/beta/me/messages/{messageID}/send (= (оказывается, он тоже не работает)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...