#outlook #office-js #exchangewebservices #outlook-web-addins
Вопрос:
Моя надстройка выполняет «судебную рассылку» (все получатели электронной почты получают незаметно различное стеганографическое содержимое тела письма) с целью выявления нарушений политики (например, «утечки»). например, это означает, что при отправке электронного письма:-
From: Person A
To: person B
Cc: person C
Bcc: person D
что генерируются 4 разных отдельных письма (оригинал в папке «Отправленные» отправителей плюс новая версия для каждого из 3 получателей = всего 4).
Используя SMTP, очень просто установить соответствующие заголовки и использовать «RCPT TO» 3 раза для отправки каждого письма.
Каким был бы Office-JS или EWS или любой другой доступный эквивалентный способ отправки моих электронных писем с использованием «Методов Microsoft» ? Можно ли выполнить» SMTP через EWS » или что-то подобное, чтобы я мог повторно использовать существующую кодовую базу (Linux)?
Есть ли способ указать получателя «Bcc» вместе с заголовками электронной почты «Кому:» и «Cc:», а затем передать почту только этому получателю Bcc, чтобы эмулировать SMTP ?
Комментарии:
1. Этот вопрос, похоже, по теме, и это здорово. Вам не нужно отказываться от ответственности за то, что вам нужна помощь только от людей, которых вы считаете квалифицированными (на самом деле этот контент просто отвлекает и, следовательно, скорее всего, будет удален, как я сделал с этим вопросом). Просто задавайте хорошие вопросы по теме, и все будет в порядке.
Ответ №1:
Нет, в отличие от SMTP, EWS, Расширенная MAPI и объектная модель Outlook не позволяют указывать получателей, отличных от тех, которые фактически получат сообщение.
SMTP-ваш лучший и единственный вариант в этом случае.
Ответ №2:
В надстройках Outlook web вам необходимо использовать OfficeJS
методы и свойства для настройки получателей:
var item;
Office.initialize = function () {
item = Office.context.mailbox.item;
// Checks for the DOM to load using the jQuery ready function.
$(document).ready(function () {
// After the DOM is loaded, app-specific code can run.
// Set recipients of the composed item.
setRecipients();
});
}
// Set the display name and email addresses of the recipients of
// the composed item.
function setRecipients() {
// Local objects to point to recipients of either
// the appointment or message that is being composed.
// bccRecipients applies to only messages, not appointments.
var toRecipients, ccRecipients, bccRecipients;
// Verify if the composed item is an appointment or message.
if (item.itemType == Office.MailboxEnums.ItemType.Appointment) {
toRecipients = item.requiredAttendees;
ccRecipients = item.optionalAttendees;
}
else {
toRecipients = item.to;
ccRecipients = item.cc;
bccRecipients = item.bcc;
}
// Use asynchronous method setAsync to set each type of recipients
// of the composed item. Each time, this example passes a set of
// names and email addresses to set, and an anonymous
// callback function that doesn't take any parameters.
toRecipients.setAsync(
[{
"displayName":"Graham Durkin",
"emailAddress":"graham@contoso.com"
},
{
"displayName" : "Donnie Weinberg",
"emailAddress" : "donnie@contoso.com"
}],
function (asyncResult) {
if (asyncResult.status == Office.AsyncResultStatus.Failed){
write(asyncResult.error.message);
}
else {
// Async call to set to-recipients of the item completed.
}
}); // End to setAsync.
// Set any cc-recipients.
ccRecipients.setAsync(
[{
"displayName":"Perry Horning",
"emailAddress":"perry@contoso.com"
},
{
"displayName" : "Guy Montenegro",
"emailAddress" : "guy@contoso.com"
}],
function (asyncResult) {
if (asyncResult.status == Office.AsyncResultStatus.Failed){
write(asyncResult.error.message);
}
else {
// Async call to set cc-recipients of the item completed.
}
}); // End cc setAsync.
// If the item has the bcc field, i.e., item is message,
// set bcc-recipients.
if (bccRecipients) {
bccRecipients.setAsync(
[{
"displayName":"Lewis Cate",
"emailAddress":"lewis@contoso.com"
},
{
"displayName" : "Francisco Stitt",
"emailAddress" : "francisco@contoso.com"
}],
function (asyncResult) {
if (asyncResult.status == Office.AsyncResultStatus.Failed){
write(asyncResult.error.message);
}
else {
// Async call to set bcc-recipients of the item completed.
// Do whatever appropriate for your scenario.
}
}); // End bcc setAsync.
}
}
// Writes to a div with id='message' on the page.
function write(message){
document.getElementById('message').innerText = message;
}
При вызове setAsync
укажите массив в качестве входного аргумента для параметра recipients в одном из следующих форматов.
- Массив строк, которые являются SMTP-адресами.
- Массив словарей, каждый из которых содержит отображаемое имя и адрес электронной почты, как показано в следующем примере кода.
- Массив
EmailAddressDetails
объектов, аналогичный тому, который возвращаетсяgetAsync
методом.
Если вы не хотите перезаписывать существующих получателей в встрече или сообщении, вместо использования Recipients.setAsync
вы можете использовать Recipients.addAsync
асинхронный метод для добавления получателей. addAsync
работает так же, как setAsync
и в том случае, когда требуется входной аргумент получателя. При необходимости вы можете указать метод обратного вызова и любые аргументы для обратного вызова с помощью asyncContext
параметра. Затем вы можете проверить состояние, результат и любую ошибку асинхронного addAsync
вызова, используя asyncResult
выходной параметр метода обратного вызова.
Подробнее об этом читайте в статье Получение, настройка или добавление получателей при составлении встречи или сообщения в Outlook.
Комментарии:
1. Хороший ответ, но он вообще не отвечает на вопрос — слово » НЕ » было написано заглавными буквами по какой-то причине.
2. Outlook (ни Exchange) не позволяет этого сделать. Поддерживаемый способ настройки получателей разнесен.