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