나는 이메일 (은 MailMessage)를 전송하는 클래스가 있지만 다음과 같은 오류 얻을 : 문자열을 살균하는 편리한 멋쟁이 방법은'지정된 문자열이 주체에 필요한 형식이 아닙니다.'
"The specified string is not in the form required for a subject."
거기에 또는 내가 내 자신을 작성해야합니까?
나는 이메일 (은 MailMessage)를 전송하는 클래스가 있지만 다음과 같은 오류 얻을 : 문자열을 살균하는 편리한 멋쟁이 방법은'지정된 문자열이 주체에 필요한 형식이 아닙니다.'
"The specified string is not in the form required for a subject."
거기에 또는 내가 내 자신을 작성해야합니까?
나는 개인적으로 그것을 시도하지 않은,하지만 this에 따라, 당신은 단지 필요
subject = subject.Replace('\r', ' ').Replace('\n', ' ');
또는 이에 해당.
if (value != null && MailBnfHelper.HasCROrLF(value))
{
throw new ArgumentException(SR.GetString(SR.MailSubjectInvalidFormat));
}
그래서 (지금)의 유일한 제한은 CR
또는 LF
의 존재로 발생합니다
내부적으로 MailMessage
클래스는 피사체를 확인합니다.
은 VB.NET
subject = subject.Replace(vbNewLine, "")
나는'subject = subject.Replace (vbCr, "") .Replace (vbLf, "")라고 생각했다. – JNF
위해 나는 .NET 2.0 및 4.5 시도하고 168 자보다 긴 주제를 보낼 수 있습니다. 나는 Papercut을 사용하여 메일을 확인했습니다.
Papercut은 재미 있지만, mike 질문에 대답하지 않고 넬슨의 대답. –
나는이 이미 응답 한 알고 있지만 그것은 간다 :
이subject = subject.Trim();
subject = subject .Substring(0, Math.Min(subject .Length, 78));
이 새로운를 제거합니다 :
가 먼저 제목 최대 길이 (What is the email subject length limit?)를 차지하고 다음 주제를 손질 할 필요가 라인이나 빈 공간이 시작과 끝에서. 그런 다음 하위 문자열을 사용하여 제목 길이를 제한합니다.
부적처럼 작동 – Filip
고맙습니다. 그러나 말하자면 - 마이크로 소프트가 개행이 허용되지 않는다고 말할 수없는 이유가 있습니까? –
당신은 문서가 어렵다는 것을 알고 있습니다 ;-) 그것이 허용되지 않는 이유는 CRLF가 메시지 형식으로 매우 특별한 목적을 가지고 있다는 것입니다 ([RFC5322] (https://tools.ietf.org/html/rfc5322 참조)) 사용자의 데이터를 자동으로 변경하는 것을 원하지는 않았지만 수동으로 수행하도록했습니다 (위 그림 참조). –