Решение "Указанная строка не соответствует форме, требуемой для объекта".
У меня есть класс, который отправляет электронную почту (MailMessage), но я получаю следующую ошибку:
"Указанная строка не в форме, необходимой для объекта."
Есть ли удобный метод денди для дезинфекции строк или мне нужно написать свои собственные?
Ответы
Ответ 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));
Это приведет к удалению любых новых строк или пустых пространств в начале и в конце. Затем подстрока используется для ограничения длины объекта.