電子メール(MailMessage)を送信するクラスがありますが、次のエラーが表示されます。
「指定された文字列は、サブジェクトに必要な形式ではありません。」
文字列をサニタイズする便利なダンディな方法はありますか、それとも自分で書く必要がありますか?
個人的には試していませんが、 this によると、必要なのは以下だけです:
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を使用して件名の長さを制限します。