70

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

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

有没有一种方便的花花公子方法来清理字符串,还是我必须自己写?

4

4 回答 4

123

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

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

或等效的东西。

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

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

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

于 2011-08-30T07:08:49.590 回答
9

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

更新:对不起,这完全是胡说八道:)在我的情况下一定是换行符。

于 2012-09-26T07:56:39.990 回答
4

对于 VB.NET

subject = subject.Replace(vbNewLine, "")
于 2012-11-23T08:03:19.393 回答
1

我知道这已经回答了,但它是:

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

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

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

于 2017-10-13T09:07:59.750 回答