我正在写一个计时器作业,一旦完成,它就会从 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归因
scroll top