Outlook Autocleaning My Line Breaks 및 내 이메일 형식을 망쳐 놓습니다.

StackOverflow https://stackoverflow.com/questions/247546

  •  05-07-2019
  •  | 
  •  

문제

DotNet Framework를 사용하여 이메일을 보내고 있습니다. 다음은 메시지를 작성하는 데 사용하는 템플릿입니다.

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

이름, eecoverAgeamount 등에 필요한 라인 브레이크를 잘못 제거하는 방법에 유의하십시오 ...

이메일 수용자가 올바르게 형식화 된 이메일을받는 것이 중요하며, 일부는 Outlook 2003을 사용한다고 가정해야합니다. 또한 AutoClean 기능을 종료하여 메시지를 올바르게 포맷 할 수있을만큼 충분히 알 수 없다고 가정 할 수 없습니다.

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

더 많은 정보 :

  • UTF-8 BodyEncoding을 사용하고 있습니다 (MSG.BodyEncoding = system.text.encoding.utf8)
  • MSG.Body는 UTF-8 인코딩 된 텍스트 파일에서 읽히고 있으며 각 줄은 CRLF로 종료됩니다.

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

도움이 되었습니까?

해결책

2 개의 공간으로 모든 라인을 시작하면 포맷을 유지하는 데 전망이 "속임수"됩니다.

그래서 변화

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 클라이언트의 기능을 "비활성화"하는 방법에 관한 것입니다.

  • 도구로 이동 -> "옵션 ..."
  • "기본 설정"탭에서 "이메일 옵션 ..."를 클릭하십시오.
  • 상자를 선택 취소 "일반 문자 메시지로 추가 라인 브레이크를 제거하십시오."
  • OK를 누르십시오

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

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

@ephemient도 제안합니다. HTML 및 일반 텍스트로 보내십시오. 좋은 고객은 후자를 보여줄 것입니다. Outlook은 전자를 보여줄 것입니다. 모두가 행복하다 (더 많은 일을 해야하는 프로그래머를 제외하고).

" r n"대신 " t r n"( t)를 추가하면 2010 년 Outlook에서 저에게 효과가있었습니다.

확장 더그 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 자 미만으로 유지하여 제거 프로세스를 피할 수 있습니다. 항상 실용적이지는 않을 수 있습니다.

텍스트를 넣으십시오 <pre> 태그와 Outlook은 텍스트를 올바르게 형식화하고 표시합니다.

HTML 본체의 CSS 인라인에서 다음과 같이 정의했습니다.

CSS :

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

글꼴 세트가 필요한 글꼴 패밀리를 정의했습니다.

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>

자동 청소는 추가 라인 브레이크를 제거하는 Outlook 기능입니다. 두 가지 방법으로 방지 할 수 있습니다.

  • 첫 번째 방법 코드를 통해 이메일을 보내는 동안 줄 전에 최소 2 개의 추가 공간을 추가하는 것입니다. Outlook이 자동으로 제거되는 라인 전에만 추가 공백을 추가 할 수 있습니다.

  • 두 번째 방법 Outlook이 추가 라인 브레이크를 제거하지 못하게하는 Outlook 설정을 변경하는 것입니다.

enter image description here

enter image description here

내 텍스트에는 ' r n'이 포함되어 있지만 Outlook 2010은 라인이 나오지 않습니다. ' r n'으로 구분 된 라인 토큰과 HTML 단락 태그에 의해 봉투 토큰을 만듭니다. 내 이메일 형식은 HTML입니다. 아래 코드에서 내 이메일을 위해 HTML 본체를 생성하고 있습니다.

string[] tokens = Regex.Split(objTickt.Description, "\r\n");
  if (tokens.Length > 0)
  {
     foreach (string line in tokens)
     {
         //htmlTW.WriteEncodedText(objTickt.Description.Replace("\r\n", "\n\n"));
         htmlTW.RenderBeginTag(HtmlTextWriterTag.P);
         htmlTW.WriteEncodedText(line);
         htmlTW.RenderEndTag();
     }
  }

라인 종료를 CRLF에서 CR 또는 LF로 변경하십시오.

이메일 상단은 CR (또는 LF) 만 사용한다고 생각하며 Outlook은 나머지 이메일이 동일한 형식을 따를 것으로 기대합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top