Решение "Указанная строка не соответствует форме, требуемой для объекта". У меня есть класс, который отправляет электронную почту (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)); Это приведет к удалению любых новых строк или пустых пространств в начале и в конце. Затем подстрока используется для ограничения длины объекта.
Ответ 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, чтобы проверить почту.
Ответ 5 Я знаю, что это уже ответили, но это идет: Во-первых, вам нужно обрезать тему, а затем учетную запись для максимальной длины объекта (Каков предел длины темы электронной почты?: subject = subject.Trim(); subject = subject .Substring(0, Math.Min(subject .Length, 78)); Это приведет к удалению любых новых строк или пустых пространств в начале и в конце. Затем подстрока используется для ограничения длины объекта.