【问题标题】:Problem while sending mail by System.Net.Mail C#通过 System.Net.Mail C# 发送邮件时出现问题
【发布时间】:2009-03-03 20:09:36
【问题描述】:

这是我的邮件发送代码。我收到“邮件标题中有无效字符”错误。当我更改我的计算机名称时,一些最短的名称。问题解决了。但是在我的域中,整个计算机名称都像“04500-ab04545.xxxdomain.gov.tr”,所以我需要为这个问题找到另一个解决方案。

所以我不能在从 c# 代码发送邮件时给出静态计算机名称。

 MailMessage msg = new MailMessage();
 msg.Body = "axxxxxx";
 msg.To.Add(new MailAddress("xxxx@xxxx.domain"));
 msg.From = new MailAddress("xxxx@xxxx.domain","blab blalb");
 msg.Subject = "Subject xxx";
 SmtpClient server = new SmtpClient("xxxxxxxx",25);
 server.Credentials = new NetworkCredential("xxxxx", "xxxxxxx");
 SmtpClient server = new SmtpClient("mail.adalet.gov.tr",25);
 server.Credentials = new NetworkCredential("xxx", "xxx");
 server.Send(msg);

【问题讨论】:

    标签: c# email system.net.mail


    【解决方案1】:

    我怀疑这可能是与编码相关的问题。

    尝试使用new MailAddress("xxxx@xxxx.domain","blab blalb", Encoding.Default) 构造函数。

    其他尝试Encoding.Unicode

    更新:

    经过一番挖掘,这个异常是从以下位置抛出的:

    void System.Net.BufferBuilder.Append(string,int,int);
    

    如果您的电子邮件地址中有任何高于 \xff 的字符,就会发生这种情况。这不应该发生,因为名称应该已经被编码,但我猜其他的东西很有趣。

    【讨论】:

    • 似乎微软有时也未能通过土耳其语测试 :)
    • “关于 \xff 的任何字符”是什么意思?
    • @Eyalk:我说的是“高于”而不是“关于”。 IOW,大于 \xff。
    • 所以如果我理解正确 - 我必须对我的字符串进行 foreach 循环并删除任何大于 \xff? 的字符。
    • 奇怪的是,只有在区域设置不是英语时才会发生这种情况。
    【解决方案2】:

    要发送的消息是什么标头?

    您可以使用此 MSDN sn-p 轻松转储:

    string[] keys = message.Headers.AllKeys;
            Console.WriteLine("Headers");
            foreach (string s in keys)
            {
                Console.WriteLine("{0}:", s);
                Console.WriteLine("    {0}", message.Headers[s]);
    

    【讨论】:

      【解决方案3】:

      如果将其修改为“网络”,我会收到此错误 --- 然后错误得到解决。 (我的理解是——如果指定pickupdirectory选项,标头-encoding utf-8(base64)报错)

      希望对你有帮助

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-08
        • 2011-10-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多