Frage

Ich schreibe einen Timer-Job, von dem nach Abschluss eine E-Mail gesendet wird noreply@company.com, wenn es in Outlook ankommt, zeigt es diese Adresse als die von Person an.

Gibt es eine Möglichkeit, einen 'Anzeigenamen' anzuzeigen.Zum Beispiel würden alle von mir erhaltenen E-Mails anzeigen Paul Matthews nicht paul.matthews@company.com.(Was ich in diesem Fall weiß, hat wahrscheinlich mehr mit AD und Exchange zu tun).

Der Code, den ich verwende, ist unten.

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());
               }
           }

Die Sache ist, die E-Mail-Adresse muss sein noreply@company.com was wir für mehrere Anwendungen verwenden werden, daher sollte der Anzeigename einen Namen der Anwendung widerspiegeln.

War es hilfreich?

Lösung

Darf ich vorschlagen, auf die Verwendung des umzusteigen System.Net.Mail.E-Mail-Nachricht objekt statt Zweckmäßigkeit. SPUtility.SendEmail ist eine gute Abkürzung, aber wie Sie gesehen haben, verlieren Sie viel Kontrolle darüber, wie die Nachricht gesendet und formatiert wird.Der MailMessage object gibt Ihnen das zurück, erfordert aber nur ein bisschen mehr Arbeit.

Um Ihre spezielle Frage zu beantworten, übernimmt das MailAddress-Objekt die Formatierung der Kombination aus E-Mail-Adresse und Name, sodass Sie Ihren Anwendungsnamen als 'verwenden müsstenfromname' unten.

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);

Andere Tipps

Wenn Sie die Sender-E-Mail-Adresse anpassen möchten, können Sie keine Sputilitys.sendemail verwenden - Sie müssen die system.net.mail-Framework-Klassen verwenden.

Unter den Abdeckungen ruft Zutelzbarkeit ein Verfahren mit dem Namen "RemoveFriendlyNameFromemailaddress" an: (

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit sharepoint.stackexchange
scroll top