Outlook Autocleaning My Line Breaks 및 내 이메일 형식을 망쳐 놓습니다.
문제
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>
내 텍스트에는 ' 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은 나머지 이메일이 동일한 형식을 따를 것으로 기대합니다.