Можно ли пометить электронное письмо как «Высокое значение» для Outlook, используя System.Net.Mail? - PullRequest
20 голосов
/ 22 апреля 2010

Часть приложения, над которым я работаю для моего клиента, включает отправку электронных писем для событий. Иногда это очень важно. Мой клиент и большинство клиентов моего клиента используют Outlook, в котором есть возможность пометить почтовое сообщение как важное.

Теперь я знаю, что бессмысленно предполагать, что все конечные пользователи будут использовать один и тот же интерфейс, не знаю. Но, учитывая, что вы можете отправлять электронную почту из Outlook как с высокой важностью, даже если цель не обязательно читает через Outlook, это означает, что в основном хранятся некоторые данные, которые позволяют Outlook узнать, было ли определенное сообщение назначено как высокая важность. Это моя интерпретация, по крайней мере.

В настоящее время приложение использует System.Net.Mail для отправки электронных писем, System.Net.Mail.MailMessages для их записи и System.Net.Mail.SmtpClient для их отправки. Можно ли установить эту настройку «Высокий уровень важности» со способностями System.Net.Mail? Если нет, есть ли какая-либо сборка, которая может настроить этот параметр?

Ответы [ 5 ]

21 голосов
/ 22 апреля 2010

Установите свойство Приоритет почтового сообщения.Его значения: «Нормальный», «Низкий» или «Высокий».

Очень позднее редактирование: Как отмечает @StefanSteiger, приоритет гарантируется только для Outlook.За прошедшие 8 лет с момента публикации этого вопроса / ответа отрасль установила заголовок «Важность» в качестве предпочтительного способа сделать это.

Даже позднее редактировать: Источник для MailMessage проясняет, что установка Приоритета фактически устанавливает три вещи: заголовок XPriority, заголовок Priority, и заголовок Importance .Таким образом, использование свойства «Приоритет» будет работать так, как ожидается в любом почтовом клиенте, и будет устанавливать соответствующие заголовки.

21 голосов
/ 22 апреля 2010

Вы можете установить System.Net.Mail.MailPriority .

MailPriority.High например.

9 голосов
/ 13 июля 2013

Используйте это - это работает для меня.

Dim mail As New MailMessage()
mail = New MailMessage()
mail.Priority = MailPriority.High
mail.Priority = MailPriority.Normal
mail.Priority = MailPriority.Low
3 голосов
/ 14 сентября 2018

То, что Outlook рассматривает приоритет как важность, это не означает, что все другие почтовые программы делают то же самое.

Приоритет и важность НЕ одно и то же.

Правильный ответ:

mail.Headers.Add("Importance", "High"); // High, normal, or low

значения не чувствительны к регистру.

https://www.iana.org/assignments/message-headers/message-headers.xhtml
https://tools.ietf.org/html/rfc4021#page-32

0 голосов
/ 06 декабря 2018

Прыжки в конце здесь! Приоритет и значение не одинаковы, но большинство из них доступны для установки большинству разработчиков. Как вы выбираете? Итак, Приоритет определен в RFC 4021, 2.1.54, как свойство, которое влияет на скорость передачи и доставку («нормальный», «срочный» и «несрочный»). Важность определена в RFC 4021, 2.1.52 как свойство, которое является подсказкой от отправителя получателям о том, насколько важно сообщение («высокое», «нормальное» и «низкое»).

В моем случае я нацеливаюсь на пользователей Outlook и использую MimeKit для создания электронных писем. Важность - это то, что волнует большинство почтовых клиентов, поэтому мой код может выглядеть следующим образом:

using MimeKit;
var message = new MimeMessage();
message.Importance = MessageImportance.High;

Я сделаю репост ссылки на Штайгера, потому что он на месте:

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