문제

완료되면 다음에서 이메일을 보내는 타이머 작업을 작성 중입니다. 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 개체는 그 기능을 제공하지만 약간의 작업이 더 필요합니다.

특정 질문에 대답하려면 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);

다른 팁

보낸 사람 이메일 주소를 사용자 지정하려면 SPUtility.SendEmail을 사용할 수 없습니다. System.Net.Mail 프레임워크 클래스를 사용해야 합니다.

내부적으로 SPUtility는 "RemoveFriendlyNameFromEmailAddress"라는 메서드를 호출합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 sharepoint.stackexchange
scroll top