2011-08-30 4 views

답변

83

나는 개인적으로 그것을 시도하지 않은,하지만 this에 따라, 당신은 단지 필요

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

또는 이에 해당.

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

그래서 (지금)의 유일한 제한은 CR 또는 LF의 존재로 발생합니다

내부적으로 MailMessage 클래스는 피사체를 확인합니다.

+0

부적처럼 작동 – Filip

+1

고맙습니다. 그러나 말하자면 - 마이크로 소프트가 개행이 허용되지 않는다고 말할 수없는 이유가 있습니까? –

+0

당신은 문서가 어렵다는 것을 알고 있습니다 ;-) 그것이 허용되지 않는 이유는 CRLF가 메시지 형식으로 매우 특별한 목적을 가지고 있다는 것입니다 ([RFC5322] (https://tools.ietf.org/html/rfc5322 참조)) 사용자의 데이터를 자동으로 변경하는 것을 원하지는 않았지만 수동으로 수행하도록했습니다 (위 그림 참조). –

10

또한 168 자로 제한되므로 확인해야합니다.

업데이트 : 미안하지만이 말은 완전하지 않습니다 :) 내 경우에는 줄 바꿈이 있어야합니다.

+2

여기에 연결할 문서가 있습니까? – mlhDev

+0

나는 그렇게 생각하지 않는다. 우리는 단지 시행 착오로 그것을 알아 냈다. 나는 틀릴 수도 있고, 직접 시험해보고 결과를 게시 할 수 있습니다. –

+0

나에게는 좋은 소리인데, 나는 그저 당신이 대답 (그리고 그와 같은 이상한 가치)에 어떻게 왔는지 궁금했다. 이미 +1 - 해결책은 해결책입니다 :) – mlhDev

3

은 VB.NET

subject = subject.Replace(vbNewLine, "") 
+2

나는'subject = subject.Replace (vbCr, "") .Replace (vbLf, "")라고 생각했다. – JNF

4

위해 나는 .NET 2.0 및 4.5 시도하고 168 자보다 긴 주제를 보낼 수 있습니다. 나는 Papercut을 사용하여 메일을 확인했습니다.

+3

Papercut은 재미 있지만, mike 질문에 대답하지 않고 넬슨의 대답. –

0

나는이 이미 응답 한 알고 있지만 그것은 간다 :

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

이 새로운를 제거합니다 :

가 먼저 제목 최대 길이 (What is the email subject length limit?)를 차지하고 다음 주제를 손질 할 필요가 라인이나 빈 공간이 시작과 끝에서. 그런 다음 하위 문자열을 사용하여 제목 길이를 제한합니다.

관련 문제