i Envoyer mail à partir de mon site (.NET Framework 2.0, IIS 7) comme mais il n'y a pas de nom d'affichage ("nom de nom") à la lettre d'obtention de la lettre, uniquement par e-mail . P> Avez-vous une idée de ce qui pourrait causer ce problème? P> Je suis sûr que le client de messagerie ignore le nom de l'écran! Le client est Outlook. P> Lorsque l'objet de transfert d'application mm code> sur le serveur, la propriété
à partir de code> est
{"nom de nom"
4 Réponses :
/// <summary> /// SMTPæå¡åéé®ä»¶ /// </summary> /// <param name="mailSubjct">é®ä»¶ä¸»é¢</param> /// <param name="mailBody">é®ä»¶å 容(html)</param> /// <param name="mailFrom">åä»¶å°å</param> /// <param name="mailAddress">æ¶ä»¶å°å</param> /// <param name="hostIp">SMTP主æºIP</param> /// <param name="username">SMTPç¨æ·å</param> /// <param name="password">SMTPå¯ç </param> /// <param name="ssl">æ¯å¦å¯ç¨SSLæ¹å¼</param> /// <param name="port">SMTP端å£</param> /// <returns></returns> public static string SendMail(string mailSubjct, string mailBody, string mailFrom, List<string> mailAddress, string hostIp, string username, string password, bool ssl, int port) { string error = string.Empty; try { MailMessage mm = new MailMessage(); mm.IsBodyHtml = false; mm.Subject = mailSubjct; mm.BodyEncoding = Encoding.UTF8; mm.Body = mailBody; mm.IsBodyHtml = true; mm.From = new MailAddress(mailFrom, Const.SYS_NAME, Encoding.UTF8); Regex regex = new Regex(@"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"); for (int i = 0; i < mailAddress.Count; i++) { if (regex.IsMatch(mailAddress[i])) { mm.To.Add(mailAddress[i]); } } if (mm.To.Count == 0) { return string.Empty; } SmtpClient sc = new SmtpClient(); NetworkCredential nc = new NetworkCredential(username, password); sc.EnableSsl = ssl; sc.UseDefaultCredentials = false; sc.Credentials = nc; sc.DeliveryMethod = SmtpDeliveryMethod.Network; sc.Host = hostIp; sc.Port = port; sc.Send(mm); } catch (Exception ex) { error = ex.Message; } return error; } i am chinese, and my english is poor. haha....int this row,second parameter : "mm.From = new MailAddress(mailFrom, Const.SYS_NAME, Encoding.UTF8);"DisplayName : "Const.SYS_NAME ", i think this is you want.
Vous pouvez définir la propriété displayName de l'objet MailAddress pour définir le nom normal, au lieu d'utiliser simplement l'adresse e-mail.
MailAddress.DisplayName n'est qu'un getter MSDN.MicRosoft .com / fr-US / bibliothèque / ... . Vous pouvez définir la surcharge mailaddress que l'OP utilise.
J'ai également eu des problèmes avec ce problème, mais j'ai trouvé que Mailaddress prend également un troisième argument de codage. Donc au lieu d'utiliser: Essayez certains de ces gars: p> Cette liste n'est pas limitative, il existe d'autres options de codage que vous pouvez utiliser. J'utilise gmail et après avoir activé l'accès à moins d'applications sécurisées , ça marche Pour toutes ces personnes après avoir utilisé le SMTPCLIPT. P> P>
C'est la bonne réponse, je l'ai testé avec une adresse de réception Gmail et en utilisant simplement encoding.utf8 code> comme troisième paramètre, le nom d'affichage a fonctionné.
J'ai eu le même problème et il semble que la fourniture des informations d'identification a amené le serveur à utiliser ceux pour le nom "de".
Je devais commenter: P>
//client.UseDefaultCredentials = true;
Êtes-vous sûr que le client de messagerie ne signifie pas simplement l'ignorant le nom code> code>?
Le code fonctionne pour moi, j'ai peur. DisplayName apparaît simplement bien dans Outlook.