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


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

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

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

5 56

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 чтобы проверить почту.

для VB.NET

subject = subject.Replace(vbNewLine, "")

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

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

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

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