Question

J'écris un travail de minuterie qui, une fois terminé, envoie un e-mail de noreply@company.com, lorsqu'il arrive dans Outlook, il affiche cette adresse comme étant celle de la personne.

Existe-t-il un moyen de lui faire afficher un « nom d'affichage ».Par exemple, tous les e-mails reçus de ma part afficheraient Paul Matthews pas paul.matthews@company.com.(Ce que je sais dans ce cas est probablement davantage lié à AD et Exchange).

Le code que j'utilise est ci-dessous.

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

Le fait est que l'adresse e-mail doit être noreply@company.com et que nous l'utiliserons pour plusieurs applications, le nom d'affichage doit donc refléter le nom de l'application.

Était-ce utile?

La solution

Puis-je suggérer de passer à l'utilisation du System.Net.Mail.MailMessage objet au lieu de SPUtility. SPUtility.SendEmail est un bon raccourci mais, comme vous l'avez vu, vous perdez beaucoup de contrôle sur la façon dont le message est envoyé et formaté.Le MailMessage object vous le rend mais nécessite juste un tout petit peu plus de travail.

Pour répondre à votre question spécifique, l'objet MailAddress gère le formatage de la combinaison adresse e-mail et nom, vous devrez donc utiliser le nom de votre application comme 'fromname' ci-dessous.

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

Autres conseils

Si vous souhaitez personnaliser l'adresse e-mail de l'expéditeur, vous ne pouvez pas utiliser SPUTILLY.SENDEMAIL - Vous devez utiliser les classes System.net.mail.

Sous les couvercles, la sputilité appelle une méthode nommée "retirerfonctionnelNameFromemailAdress": (

Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top