解析“指定的字符串不是主题所需的格式”

我有一个发送电子邮件(MailMessage)的类,但是我得到以下错误:

“指定的字符串不符合主题所需的格式。”

有没有方便的方法来清理字符串,还是我必须自己编写?

44647 次浏览

我没有亲自尝试过,但根据 这个,你只需要:

subject = subject.Replace('\r', ' ').Replace('\n', ' ');

或者类似的东西。

在内部,MailMessage类将用以下方法检查主题:

if (value != null && MailBnfHelper.HasCROrLF(value))
{
throw new ArgumentException(SR.GetString(SR.MailSubjectInvalidFormat));
}

所以(现在)唯一的限制是 CRLF的存在。

此外,还有一个168个字符的限制,所以你应该检查一下。

更新: 对不起,这完全是胡说八道:) 我的案子肯定是断线了。

对于 VB.NET

subject = subject.Replace(vbNewLine, "")

我知道这个问题已经得到了回答,但它的答案是:

首先,你需要修剪主题,然后说明主题的最大长度(电子邮件的主题长度限制是多少?) :

subject = subject.Trim();
subject = subject.Substring(0, Math.Min(subject.Length, 78));

这将删除开头和结尾处的任何新行或空白。然后使用 Substring 限制主题长度。