[.net] Outlook이 내 줄 바꿈을 자동 정리하고 내 이메일 형식을 망쳐 놓습니다.

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로 끝납니다.

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



답변

2 개의 공백으로 모든 줄을 시작하면 Outlook이 서식을 유지하도록 “속임”됩니다.

그래서 변경

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%

  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%
^^ <--- Two extra spaces at the start of every line

여기입니다 기사 내 대답보다 조금 더 깊이 들어가는이 문제를 연구 할 때 내가 찾은이.


답변

끝에 (CR LF 바로 앞에) 탭 문자를 삽입 할 수도 있습니다 . 이 추가 공백은 줄 끝에 있으므로 사용자에게 표시되지 않습니다. 왼쪽에 공백을 삽입하는 것보다 이것을 선호 할 수 있습니다. 단일 공백으로는 충분하지 않습니다 (여러 공백이 도움이 될 수 있지만 모르겠습니다.)


답변

이 대답은 Outlook 클라이언트에서 기능을 “비활성화”하는 방법에 대한 것입니다.

  • 도구-> “옵션 …”으로 이동합니다.
  • “기본 설정”탭에서 “이메일 옵션 …”을 클릭합니다.
  • “일반 텍스트 메시지에서 추가 줄 바꿈 제거”상자의 선택을 취소하십시오.
  • 확인을 누르십시오.

참고 : Outlook 2007을 사용하고 있습니다.


답변

나는 항상 이메일을 html로 형식화하는 것이 더 행운이었습니다. html 형식을 허용하도록 클라이언트를 설정해야하는 최종 사용자 문제가 여전히있을 수 있지만, 많은 전자 메일이 html 형식으로 제공되기 때문에 일반적으로 이것에 더 익숙합니다. 또한 html 태그를 추가하는 데 약간의 작업이 필요하지만 최종 결과는 훨씬 더 제어 가능합니다.

@ephemient는 또한 다음을 제안합니다. HTML과 일반 텍스트로 전송합니다. 좋은 고객은 후자를, Outlook은 전자를, 모두가 행복합니다 (더 많은 일을해야하는 프로그래머를 제외하고).


답변

Outlook 2010에서 “\ r \ n”대신 “\ t \ r \ n”(TAB의 경우 \ t)를 추가하면 저에게 효과적이었습니다.


답변

Doug L 답변을 확장하면 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);


답변

일반 텍스트 전자 메일을 생성 한 다음 Outlook 2003 SP3에서 읽을 때 동일한 문제가 나타납니다. 줄 길이를 40 자 미만으로 유지하면 제거 프로세스를 피할 수 있습니다. 항상 실용적이지 않을 수 있습니다.