У нас есть агент Exchange Trasport, который является агентом маршрутизации. В событии OnSubmittedMessage
нам нужно проверить MailItem
и определить, является ли оно исходящим или входящим. В настоящее время я рассматриваю использование свойства SmtpServer.AcceptedDomains
, чтобы проверить, находится ли электронная почта отправителя в списке обслуживаемых доменов. Вот пример того, как мы пытаемся это сделать:
private bool IsOutbound(MailItem mailItem, AcceptedDomainCollection acceptedDomains)
{
if (acceptedDomains.Find(mailItem.FromAddress) != null)
{
return true;
}
return false;
}
Я не очень хорошо знаком с обслуживаемыми доменами и пытаюсь понять, является ли это жизнеспособным решением для надежного определения направления электронной почты? Этот сценарий также должен работать для компаний, у которых есть несколько доменов, включенных в настройку их организации Exchange. Обратите внимание, что мы планируем поддерживать Exchange 2010–2016, если это будет иметь значение.
--РЕДАКТИРОВАТЬ--
Получив некоторую помощь от @GlenScales, я понял, что мне нужно немного обновить свой вопрос.
Моя цель — определить, находится ли отправитель электронной почты в домене, который является внутренним для организации Exchange. Это также может быть достигнуто путем определения того, было ли электронное письмо сгенерировано в Exchange, мы можем проверить получателей на более позднем этапе и увидеть, является ли оно входящим или исходящим.
При этом мы рассмотрели 3 возможных решения:
- Проверьте домен отправителя по списку обслуживаемых доменов.
- Используйте адресную книгу, чтобы проверить, является ли отправитель внутренним
- Проверьте свойство InboundDeliveryMethod и убедитесь, что оно было создано из почтового ящика.
В конце концов мы решили, что действительно хотим проверять сообщения, созданные только из почтового ящика, и выбрали вариант №3. № 1 звучал так, как будто он потенциально может включать домены, которые на самом деле были просто «пересылающими» доменами, и мы не хотим рассматривать эти сообщения в нашем приложении.