Решение 'Указанная строка не в форме, требуемой для субъекта.' - PullRequest
61 голосов
/ 30 августа 2011

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

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

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

Ответы [ 5 ]

101 голосов
/ 30 августа 2011

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

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

или что-то эквивалентное.

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

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

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

12 голосов
/ 26 сентября 2012

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

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

4 голосов
/ 20 ноября 2013

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

3 голосов
/ 23 ноября 2012

Для VB.NET

subject = subject.Replace(vbNewLine, "")
0 голосов
/ 13 октября 2017

Я знаю, что на этот вопрос уже есть ответ, но он звучит так:

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...