解决“指定的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)); }
所以唯一的限制(现在)恰好是CR
或LF
的存在。
也有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被用来限制主题的长度。