SPUtility отправка электронной почты с отображаемым именем

sharepoint.stackexchange https://sharepoint.stackexchange.com//questions/40026

  •  09-12-2019
  •  | 
  •  

Вопрос

Я пишу задание таймера, которое после завершения отправляет электронное письмо от noreply@company.com, когда он поступает в Outlook, он показывает этот адрес как адрес от человека.

Есть ли способ заставить его отображать «отображаемое имя».Например, во всех полученных от меня электронных письмах будет отображаться Paul Matthews нет paul.matthews@company.com.(Что, как я знаю, в данном случае, вероятно, больше связано с AD и Exchange).

Код, который я использую, приведен ниже.

var emailFromAddress = _properties["EmailFromAddress"].ToString();
           var emailToAddress = _properties["EmailDistributionGroup"].ToString();
           var webAddress = _properties["WebSiteOfLibrary"].ToString();

           var subject = "New Report - " + DateTime.Now.ToString("dd MMM yyyy");

           StringDictionary messageHeader = new StringDictionary();
           messageHeader.Add("to", emailToAddress);
           messageHeader.Add("from", emailFromAddress);
           messageHeader.Add("subject", subject);
           messageHeader.Add("content-type", "text/html");

           using (SPSite site = new SPSite(webAddress))
           {
               using (SPWeb web = site.OpenWeb())
               {
                   DateTime timeNow = DateTime.Now;
                   var sb = new StringBuilder();
                   sb.Append(
                       "<STYLE TYPE='text/css'>body, html{font-color:#000;font-family:arial;font-size:8.0pt}</STYLE>");
                   sb.AppendFormat("<div style='font-size:11pt;font-family:calibri'>Results between {0} and {1}</div><br/><br/>", LastRun.ToString("dd MMM yyyy hh:mm tt"), timeNow.ToString("dd MMM yyyy h:mm tt"));
                   sb.AppendFormat("<div style='font-size:11pt;font-family:calibri'>Total: {0}<br/><br/>", total);
                   sb.AppendLine(HTMLResults);

                   SPUtility.SendEmail(web, messageHeader, sb.ToString());
               }
           }

Дело в том, что адрес электронной почты должен быть noreply@company.com, который мы будем использовать для нескольких приложений, поэтому отображаемое имя должно отражать имя приложения.

Это было полезно?

Решение

Могу ли я предложить перейти на использование System.Net.Mail.MailMessage объект вместо SPUtility. SPUtility.SendEmail это хороший ярлык, но, как вы видели, вы теряете большую часть контроля над тем, как сообщение отправляется и форматируется.А MailMessage object возвращает вам это, но требует лишь немного больше работы.

Чтобы ответить на ваш конкретный вопрос, объект MailAddress обрабатывает форматирование комбинации адреса электронной почты и имени, поэтому вам придется использовать имя вашего приложения в качестве 'fromname' ниже.

MailMessage msg = new MailMessage();

msg.From = new MailAddress(web.Site.WebApplication.OutboundMailSenderAddress, fromName);
msg.To.Add(new MailAddress(to));
msg.Subject = subject;
msg.Body = message;
msg.IsBodyHtml = true;
msg.BodyEncoding = System.Text.Encoding.UTF8;

SmtpClient server = new SmtpClient(web.Site.WebApplication.OutboundMailServiceInstance.Server.Address);

server.Send(msg);

Другие советы

Если вы хотите настроить адрес электронной почты отправителя, то вы не можете использовать SPUTILIVE.sendemail - вам придется использовать классы System.net.mail.

Под крышками, гипкость вызывает метод с именем «RemoveFriendryNameFromeMailAddress»: (

Лицензировано под: CC-BY-SA с атрибуция
Не связан с sharepoint.stackexchange
scroll top