Подтвердить что ты не робот

Решение "Указанная строка не соответствует форме, требуемой для объекта".

У меня есть класс, который отправляет электронную почту (MailMessage), но я получаю следующую ошибку:

"Указанная строка не в форме, необходимой для объекта."

Есть ли удобный метод денди для дезинфекции строк или мне нужно написать свои собственные?

4b9b3361

Ответ 1

Я лично не пробовал, но согласно this, вам нужно только:

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

или что-то подобное.

Внутри класс MailMessage будет проверять объект с помощью:

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

Таким образом, единственным ограничением (на данный момент) является наличие CR или LF.

Ответ 2

Также существует предел в 168 символов, поэтому вы также должны это проверить.

ОБНОВЛЕНИЕ: извините, это полная фигня:) Должно быть, это был разрыв строки в моем случае.

Ответ 3

Я пробовал для .NET 2.0 и 4.5, и он позволяет отправлять более длинные темы, чем 168 символов. Я использовал Papercut, чтобы проверить почту.

Ответ 4

Для VB.NET

subject = subject.Replace(vbNewLine, "")

Ответ 5

Я знаю, что это уже ответили, но это идет:

Во-первых, вам нужно обрезать тему, а затем учетную запись для максимальной длины объекта (Каков предел длины темы электронной почты?:

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

Это приведет к удалению любых новых строк или пустых пространств в начале и в конце. Затем подстрока используется для ограничения длины объекта.