[.net] Outlook에서 자동 줄 바꿈이 발생하여 이메일 형식이 엉망이되고 엉망이됩니다.



4 Answers

끝 부분 (CR LF 바로 앞에)에 탭 문자를 삽입 할 수도 있습니다. 이 여분의 공백은 라인의 끝에 있으므로 사용자에게는 보이지 않습니다. 왼쪽에 공백을 넣는 것이 좋습니다. 단일 공간으로는 충분하지 않습니다 (아마도 여러 개의 공간이 도움이 될지 모르겠지만).

Question

dotnet 프레임 워크를 사용하여 전자 메일을 보냅니다. 다음은 메시지를 만드는 데 사용하는 템플릿입니다.

Date of Hire: %HireDate%
Annual Salary: %AnnualIncome%
Reason for Request: %ReasonForRequest%

Name of Voluntary Employee: %FirstName% %LastName%
Total Coverage Applied For:  %EECoverageAmount%
Guaranteed Coverage Portion: %GICoveragePortion%
Amount Subject to Medical Evident: %GIOverage%

Outlook에서 메시지가 수신되면 Outlook에서 "이 메시지의 추가 줄 바꿈이 제거되었습니다"라고 알려줍니다. 그리고 메시지는 다음과 같이 표시됩니다.

Date of Hire: 9/28/2001
Annual Salary: $100,000
Reason for Request: New Hire

Name of Voluntary Employee: Ronald Weasley Total Coverage Applied For:  $500,000 Guaranteed Coverage Portion: $300,000.00 Amount Subject to Medical Evident: $200,000

Outlook에서 이름, EECoverageAmount 등 뒤에 필요한 줄 바꿈을 잘못 제거하는 방법에 유의하십시오.

전자 메일 수신자가 올바른 형식의 전자 메일을받는 것이 중요하며 그 중 일부는 Outlook 2003을 사용한다고 가정해야합니다. 형식을 올바르게 지정하기 위해 자동 채우기 기능을 차단할만큼 충분히 알고 있다고 가정 할 수도 없습니다.

다른 메일 클라이언트에서이 메시지를보고 올바르게 표시합니다.

좀 더 자세한 정보 :

  • UTF-8 BodyEncoding (msg.BodyEncoding = System.Text.Encoding.UTF8)을 사용하고 있습니다.
  • msg.Body는 UTF-8로 인코딩 된 텍스트 파일에서 읽히고 각 줄은 crlf로 끝납니다.

질문 :이 문제를 피하기 위해 메시지의 형식을 어떻게 변경합니까?




응답을 확대하면, HTML 메시징이 훨씬 유비쿼터스이며 2008 년에 그 대답이 게시되었을 때보다 지금 받아 들여지고 있다고 생각하기 때문입니다. 본문을 변환하고 HTML 형식으로 메시지를 보내는 데 도움이되는 간단한 C # 코드입니다.

body = string.Format("<font face='calibri,arial,sans-serif'>{0}<font/>", body.Replace("\r\n", "<br>"));

using (var smtpClient = new SmtpClient() { Host = smtpHost })
using (var msg = new MailMessage(from, emailDistribution, subject, body) { IsBodyHtml = true })
     smtpClient.Send(msg);



라인 종료를 crlf에서 cr 또는 lf로 변경하십시오.

전자 메일의 맨 위에는 cr (또는 lf) 만 사용하고 Outlook에서는 나머지 전자 메일이 같은 형식을 따르기를 기대합니다.




<pre> 태그에 텍스트를 넣으면 Outlook이 텍스트를 올바르게 형식화하고 표시합니다.

나는 HTML Body에서 다음과 같이 CSS 인라인으로 정의했다.

CSS :

pre {
 font-family: Verdana, Geneva, sans-serif;
}

font-family를 폰트 세트로 정의했습니다.

HTML :

<td width="70%"><pre>Entry Date/Time:       2013-09-19 17:06:25
Entered By:     Chris

worklog mania

____________________________________________________________________________________________________

Entry Date/Time:        2013-09-19 17:05:42
Entered By:     Chris

this is a new Worklog Entry</pre></td>



나는 항상 html로 전자 메일을 형식화하는 것이 더 좋았다. HTML 형식을 허용하도록 클라이언트를 설정해야한다는 최종 사용자 문제가있을 수 있지만 많은 전자 메일이 html 형식으로 제공되기 때문에 일반적으로이 기능에 익숙합니다. 마지막으로 html 태그를 추가하는 작업이 조금 더 많지만 최종 결과는 훨씬 제어하기 쉽습니다.

@ephemient는 또한 다음 과 같이 제안합니다. HTML과 일반 텍스트로 보내십시오. 좋은 고객은 후자를 보여줄 것이며, Outlook은 전자를 보여줄 것이다. 더 많은 일을해야하는 프로그래머를 제외하고는 모두가 행복하다.



Related