解决“指定的string不是主题所需的格式”。

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

“指定的string不是主题所需的forms。”

有没有一种方便的方法来消毒string,还是必须自己写?

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

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

或者相当的东西。

在内部, MailMessage类将检查主题:

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

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

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

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

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

对于VB.NET

 subject = subject.Replace(vbNewLine, "") 

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

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

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

这将在开始和结束时删除所有新行或空白空间。 然后Substring被用来限制主题的长度。