电邮主题问题

时间:2011-04-11 19:25:00

标签: c# .net email encoding

我在我的程序中使用MailMessage类。当主题太长时,主题看起来像。

主题:

=?utf-8?B?W0VudGVycHJpc2UgUHJpb3JpdHldIC0gQ3VzdG9tZXIgSW5jaWRlbnQgNjkxNzIgZm9yIEhhcmlkaGFyYW4gKDEzMjM5OSkgaGFyaWRoYXJhbnJAc3luY2Z1c2lvbi5jb20gOiBUZXN0aW5nIFRlc3RpbmcgVGVzdGluZyBUZXNpbmcgVGVzdGluZyBUZXN0aW5nIFRlc3RpbmcgVGVzdGluZyBUZXN0aW5nIFRlc3Rpbmcg4o"

仅在服务器中出现此问题。调试时我在“本地”中使用了相同的主题内容但是,我得到了正确的主题。

程序:

protected MailMessage msg;
msg.Subject = subject;

在WebMail.IHostExchange.NET中也有相同的(错误)主题。

有什么问题?

更新

这是我编码的一部分。

  public EmailSenderThread(string emailAddresses, string ccemailaddress, string from, string subject, string body)
            : base()
        {
            msgThread = new Thread(new ThreadStart(MailSender));
            this.mailAddress = emailAddresses;
            this.ccmailAddress = ccemailaddress;
            msg.From = new MailAddress(from);
            msg.IsBodyHtml = true;
            msg.Body = body;          
            string[] mails = emailAddresses.Split(';');
            foreach (string mail in mails)
                if (!string.IsNullOrEmpty(mail))
                    msg.To.Add(mail);
            if (ccemailaddress != string.Empty)
            {
                string[] ccemails = ccemailaddress.Split(';');
                foreach (string ccmail in ccemails)
                    if (!string.IsNullOrEmpty(ccmail))
                        msg.CC.Add(ccmail);
            }
            msg.Subject = subject;
            msgThread.Start();
        }

我已经尝试了

msg.SubjectEncoding = System.Text.Encoding.UTF8;

但我得到了同样的错误。你有我的疑问吗?如果我没有清楚解释,请告诉我。

1)为什么它在当地工作正常?以及当我将其托管到服务器时它为什么不工作。 ?

2)主题行的最大长度是多少?

2 个答案:

答案 0 :(得分:2)

2)主题行的最大长度是多少?

RFC822关于非结构化标头字段:

  

本标准中的某些字段主体被简单地定义为“非结构化”(下面指定为除CR和LF之外的任何US-ASCII字符),没有进一步的限制。这些被称为非结构化的场体。在语义上,非结构化的字段主体简单地被视为单行字符而没有进一步处理(除了标题“折叠”和“展开”,如2.2.3节所述)。

主题行是非结构化字段,因此没有强加长度限制。

答案 1 :(得分:1)

如果没有看到更多代码,我将猜测编码问题 - 尝试为主题和正文指定编码。 Look at this post for sample code