добавление встроенного изображения с использованием строки запроса вместо общедоступного URL-адреса, Office365 - PullRequest
0 голосов
/ 12 июня 2018

Я добавляю встроенное изображение в тело Outlook с помощью сообщения создания и придумала эту проблему.Вот документация для addFileAttachmentAysnc:

 Office.context.mailbox.item.addFileAttachmentAsync(attachmentURL, attachmentURL, options, callback);

Мой attachmentURL - это строка запроса с идентификатором изображения, токеном пользователя, smtp:

 http://namiq-pc/MailForms/api/GetAttachment?AttId=logo.png&MwToken=eteFIPebdPIKTLhfWKXDirp/rhdEVLmBxnKVU69mM36HgJCiINang8QDnB9w4ibKX6YG58esb1Kxa4oPw6s+QenADodv21An6/rjOkBIY1u5KObhrGhZFfOFRRD0+K7Q69J0VmL+6GY=&ReqId=HCYJ+G/WakTy/s1Hz5kURnU4cuANAb83lQ==&userSmtp=tw1621@mdev.org

Как только я закончу свою форму создания (всплывающее окно)вверх окно), я нажимаю кнопку Готово, который должен добавить изображение к телу.Я должен также упомянуть, что на моем контроллере я проверяю IP-адрес пользователя, чтобы убедиться, что ему разрешено делать запрос.Когда addFileAttachmentAsync завершает свою работу, он устанавливает для img src значение «cid: xxxx» и вызывает

Office.cast.item.toItemCompose(Office.context.mailbox.item).body.setSelectedDataAsync(body,{coercionType: "html", asyncContext: "set message body" }    

Когда я нажимаю кнопку «Готово», текстовое содержимое добавляется нормально, я тонко отрисовываю источник изображения, заставляя его снова перейти к моему контроллеру ине проходит проверку IP, потому что теперь Outlook делает запрос, а не пользователь (IP-адрес запроса в формате IPv6).(У проверки IP есть список IP-адресов потенциальных пользователей в формате 10.10.xx.xx).

Теперь в теле моего письма я получаю разорванное изображение с моим attachmentURL в качестве источника и originalsrc - это то, что я установил

<div class="x_mw-images"><img src="http://namiq-pc/MailForms/api/GetAttachment?AttId=logo.png&amp;MwToken=eteFIPebdPIKTLhfWKXDirp/rhdEVLmBxnKVU69mM36HgJCiINang8QDnB9w4ibKOnFdBCeOpo1Nr8bCtXa4vyQ5PI/bOg8yTI/qpY5HVNpPVBQJghdmnAfgR/WTaGk0hAiQn3237yU=&amp;ReqId=IOyOCna5kLpAKN6EjFKuNExpYNANAb83lQ==&amp;userSmtp=tw1621@mdev.org" alt="logo.png" height="100" originalsrc="cid:1528819032946.png" size="90196" style="user-select: none;"></div>

Насколько я понимаю, что бы вы ни указали в качестве источника, Outlook переопределяет его с помощью attachmentURL и устанавливает значение "src" в качестве исходного источника.Проверка IP-адреса - важный шаг в моем случае, любая идея, как обойти эту проблему или может быть объяснением того, что я делаю неправильно, поможет.

1 Ответ

0 голосов
/ 14 июня 2018

Я разобрался с решением этой проблемы.Мой код работает так: сначала он отправляет запрос POST с токеном пользователя и путем.Этот запрос POST возвращает имена файлов, которые нужно извлечь из sevrer.Затем я вызываю addFileAttachmentAsync с этими именами файлов и некоторыми другими деталями, чтобы помочь аутентификации.

 http://namiq-pc/MailForms/api/GetAttachment?AttId=logo.png&MwToken=eteFIPebdPIKTLhfWKXDirp/rhdEVLmBxnKVU69mM36HgJCiINang8QDnB9w4ibKX6YG58esb1Kxa4oPw6s+QenADodv21An6/rjOkBIY1u5KObhrGhZFfOFRRD0+K7Q69J0VmL+6GY=&ReqId=HCYJ+G/WakTy/s1Hz5kURnU4cuANAb83lQ==&userSmtp=tw1621@mdev.org

Я проверяю IP, когда addFileAttachmentAsync делает GET-запрос к серверу.Этот шаг выполнен успешно из-за списка безопасных IP-адресов.В случае неудачной проверки IP (что происходит при преобразовании тела формы compose в тело почты), я просто проверяю, отправляются ли запросы POST и GET на один и тот же адрес, сравнивая хэш IP-адресов.

Поскольку сервер выполняет оба запроса на этом последнем шаге, когда все идет правильно, они совпадают. Вам просто нужно нести IP-адрес POST-запроса на всех этих этапах (возвращая хешированный IP-адрес из POST в виде JSON), чтобы вы могли сравнить его во время GET.

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