SendEmail(SPWeb, Boolean, Boolean, String, String, String) SendEmail(SPWeb, Boolean, Boolean, String, String, String, Boolean)Проблем и опасений не вызывают. Почта отлично отсылается, если в Central Administration (далее CA) указаны корректные настройки.
Но вот интерес вызывают как раз первые две реализации метода:
SendEmail(SPWeb, StringDictionary, String) SendEmail(SPWeb, StringDictionary, String, Boolean)Вторым параметром оба метода принимают словарь из строк, чтобы добавить в отправляемое письмо нужный набор header-ов. Накидаем простенький пример:
var headers = new StringDictionary { { "to", "samplemail@sample.com" }, { "subject", "Test subject" }, { "content-type", "text/html" } }; SPUtility.SendEmail(web, headers, bodyText);И тут выясняется некая особенность. Если мы передаем свой набор header-ов, то выбор email-a, с которого нужно эту самую почту отправить - работает несколько по другому. Если в контексте указанного web-а, у пользователя в настройках указан email, то почта попытается уйти именно с email-а пользователя. Если же такой email не указан, то берется адрес, указанный в CA. Решить эту ситуацию можно довольно просто - необходимо явно добавлять в словарь header "from", где и указывать необходимый адрес отправителя. В данном случае - это адрес из CA.
var headers = new StringDictionary { { "to", "samplemail@sample.com" }, { "from", web.Site.WebApplication.OutboundMailSenderAddress }, { "subject", "Test subject" }, { "content-type", "text/html" } };Теперь почта уходит от корректного отправителя.
Комментариев нет:
Отправить комментарий