У меня есть класс, который отправляет электронное письмо (MailMessage), но я получаю следующую ошибку:
«Указанная строка не в форме, требуемой для темы».
Есть ли удобный метод денди для дезинфекции строк или мне нужно написать свои собственные?
У меня есть класс, который отправляет электронное письмо (MailMessage), но я получаю следующую ошибку:
«Указанная строка не в форме, требуемой для темы».
Есть ли удобный метод денди для дезинфекции строк или мне нужно написать свои собственные?
Я лично не пробовал, но согласно this, вам нужно только:
subject = subject.Replace('\r', ' ').Replace('\n', ' ');
или что-то подобное.
Внутренне класс MailMessage
будет проверять тему с помощью:
if (value != null && MailBnfHelper.HasCROrLF(value))
{
throw new ArgumentException(SR.GetString(SR.MailSubjectInvalidFormat));
}
Таким образом, единственным ограничением (на данный момент) является наличие CR
или LF
.
subject = subject.Replace(Environment.NewLine, " ");
- person Nae; 20.02.2020
\r
и \n
. Ваше решение будет работать только в некоторых случаях ...
- person Mladen B.; 26.02.2021
Также существует ограничение в 168 символов, так что вы тоже должны проверить это.
ОБНОВЛЕНИЕ: извините, это полная чушь :) В моем случае это был разрыв строки.
Для VB.NET
subject = subject.Replace(vbNewLine, "")
subject = subject.Replace(vbCr, " ").Replace(vbLf, " ")
- person JNF; 16.01.2013
Я знаю, что на это уже был дан ответ, но это так:
Во-первых, вам нужно обрезать тему, а затем учесть максимальную длину темы (Что такое ограничение длины темы электронного письма?):
subject = subject.Trim();
subject = subject.Substring(0, Math.Min(subject.Length, 78));
Это удалит все новые строки или пустые места в начале и в конце. Затем Substring используется для ограничения длины темы.