向具有国际字符的收件人发送电子邮件

时间:2010-12-10 09:40:54

标签: c# email encoding

我需要向电子邮件地址中包含国际字符的收件人发送电子邮件。电子邮件示例如下:

  

GaÙl@asterixthe.com

我做了很多搜索,但我发现的信息是身体而不是接收者。我是否需要以某种方式对此进行mime编码,如果是,那该怎么办?

我得到的代码如下:

 MailMessage mailMessage = 
    new MailMessage(email.SenderEmailAddress, email.RecipientEmailAddress, "Why hello there!", emailMessage)
    {
        IsBodyHtml = true,
        BodyEncoding = new System.Text.UTF8Encoding()
    };


 SmtpClient smtpClient = new SmtpClient("localhost")
 {
    Port = 25,
 };
 smtpClient.Send(mailMessage);

谢谢,

西蒙

编辑:这是例外

System.FormatException: The specified string is not in the form required for an
e-mail address.
   at System.Net.Mime.MailBnfHelper.ReadMailAddress(String data, Int32& offset,
String& displayName)
   at System.Net.Mime.MailBnfHelper.ReadMailAddress(String data, Int32& offset)
   at System.Net.Mail.MailAddressCollection.ParseValue(String addresses)
   at System.Net.Mail.MailAddressCollection.Add(String addresses)
   at System.Net.Mail.Message..ctor(String from, String to)
   at System.Net.Mail.MailMessage..ctor(String from, String to)
   at System.Net.Mail.MailMessage..ctor(String from, String to, String subject,
String body)

1 个答案:

答案 0 :(得分:0)

确定,

在.Net框架中阅读MailMessage类的文档,我发现该类的一个构造函数接收一个MailAddress对象。

根据MSDN(http://msdn.microsoft.com/en-us/library/system.net.mail.mailaddress.aspx),DisplayName属性可以包含非ASCII字符,我认为如果他们明确指定是因为Name不能拥有它们。

你有没有尝试过另一个帖子的建议,那个说你可以使用“punycode”?