Domanda

Sto scrivendo un lavoro timer che una volta completato invia un'e-mail da noreply@company.com, quando arriva in Outlook mostra quell'indirizzo come da persona.

C'è un modo per farlo visualizzare un 'nome visualizzato'.Ad esempio tutte le e-mail ricevute da me mostrino Paul Matthews non paul.matthews@company.com.(Che conosco in questo caso è probabilmente più a che fare con l'annuncio e lo scambio).

Il codice che sto usando è qui sotto.

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

La cosa è che l'indirizzo email deve essere noreply@company.com che useremo questo per più applicazioni, quindi il nome visualizzato dovrebbe riflettere un nome dell'applicazione.

È stato utile?

Soluzione

Potrei suggerire di passare all'utilizzo di system.net.Mail.mailmessage oggetto invece di sputilità.SPUtility.SendEmail è un buon collegamento ma, come hai visto, perdi un sacco di controllo su come il messaggio viene inviato e formattato.L'oggetto MailMessage ti dà quella parte posteriore, ma richiede solo un minuscolo un po 'più di lavoro.

Per rispondere alla tua domanda specifica, l'oggetto MaiRaddress gestisce la formattazione dell'indirizzo e-mail e della combinazione del nome in modo da poter utilizzare il nome dell'applicazione come "fromname" di seguito.

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

Altri suggerimenti

Se si desidera personalizzare l'indirizzo email del mittente, non è possibile utilizzare la sputility.Sendemail - dovrai utilizzare le classi Framework System.Net.mail.

Sotto le coperte, la Spirility chiama un metodo denominato "removefriendlynamefromemailAddress": (

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a sharepoint.stackexchange
scroll top