解析'指定的字符串不是主题所需的形式。'

时间:2011-08-30 07:04:41

标签: c# asp.net mailmessage

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

  

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

是否有一种方便的花花公子方法来消毒字符串,还是我必须自己编写?

5 个答案:

答案 0 :(得分:97)

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

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

或类似的东西。

在内部,MailMessage课程将通过以下方式检查主题:

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

所以唯一的限制(目前)恰好是CRLF的存在。

答案 1 :(得分:12)

此外,还有168个字符的限制,因此您也应该检查它。

更新:对不起,这是完全废话:) 在我的情况下,它一定是换行符。

答案 2 :(得分:4)

我尝试使用.NET 2.0和4.5,它允许发送超过168个字符的较长主题。 我使用Papercut来检查邮件。

答案 3 :(得分:3)

对于VB.NET

subject = subject.Replace(vbNewLine, "")

答案 4 :(得分:0)

我知道这已经回答了,但它确实如此:

首先,您需要修剪主题然后考虑主题最大长度(What is the email subject length limit?):

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

这将删除开头和结尾的所有新行或空格。然后使用Substring来限制主题长度。