2013-07-25 2 views
1

텍스트, HTML 및 틱 첨부 파일이 포함 된 멀티 파트 전자 메일을 보내는 Python 스크립트가 있습니다. 아이디어는 현대 이메일 클라이언트가 HTML 부분을 렌더링하고 이벤트를 사용자의 캘린더에 추가 할 것을 제안합니다. 이 작품Exchange로 보내기 : RTF 로의 HTML의 손실이 적은 변환을 사용하지 않도록 설정하는 방법?

import smtplib 
from email.mime.multipart import MIMEMultipart 
from email.mime.text import MIMEText 
from icalendar import Calendar, Event, UTC, vText, vCalAddress 
# ... set up calendar invite, render text and html templates ... 
msg = MIMEMultipart('alternative') 
msg_text = MIMEText(body_text, 'plain', 'utf-8') 
msg_html = MIMEText(body_html, 'html', 'utf-8') 
meeting = MIMEText(cal.as_string(), 'calendar;method=REQUEST', 'utf-8') 
meeting.set_param('method', 'REQUEST') 
meeting.set_param('name', 'meeting.ics') 
meeting.add_header('Content-class', 'urn:content-classes:calendarmessage') 
# ... set up various message attributes: to/from/subject ... 
msg.add_header('Content-class', 'urn:content-classes:calendarmessage') 
msg.attach(msg_text) 
msg.attach(msg_html) 
msg.attach(meeting) 
s = smtplib.SMTP(smtp_server) 
s.sendmail(sender, send_to, msg.as_string()) 

: 내가 메시지를 얻을, 그것은 HTML로 표시되며, 난 쉽게 Outlook과 맥 메일에서 내 캘린더에 이벤트를 추가 할 수 있습니다 같은

코드 보인다. 그러나 HTML이 손상되었습니다. 여기

<meta name="Generator" content="Microsoft Exchange Server"> 
<!-- converted from rtf --> 

내가 지금까지 알고있다 : 나는 달력 첨부 파일을 드롭하면, HTML은 변환없이 그것을 통해 만들어

  • 여기에 HTML의 표지입니다.
  • 메일에 마지막으로 첨부하면 일정 초대를받을 수 있습니다.

캘린더 첨부로 인해 첨부 파일이 Exchange에서 내 HTML 메시지를 엉망으로 만들 수 있습니다. HTML을 RTF 형식으로 변환하지 말라고 Microsoft에 요청하기 위해 메시지 나 HTML에 추가 할 수있는 헤더가 있습니까?

답변

1

Outlook은 약속, 작업 및 연락처와 관련하여 RTF와 만 작동합니다. 회의 초대장이 HTML 본문과 함께 제공되면 RTF로 변환됩니다.

업데이트 : Outlook 2016부터는 더 이상 지원되지 않습니다. 이제 Outlook에서는 약속 및 작업에 대해 HTML을 기본적으로 지원합니다. HTML은 PR_HTML (또는 PR_RTF_COMPRERSSED의 RTF-wrapped HTML)에 저장되며 일반 전자 메일 메시지와 마찬가지로 형식을 지정할 수 있습니다. 불행히도 여전히 Outlook Object Model 레벨에는 노출되지 않습니다. 아직 AppointmentItem.HTMLBody 속성은 없습니다.

+0

표창장을 받으시겠습니까? 이것에 대해 더 많이 읽고 싶어하지만 인터넷에서 찾을 수는 없습니다. – pkrish

+0

위의 업데이트를 참조하십시오. –

+0

감사합니다. 내가 겪고있는 문제는 Exchange 서버가이 주석 에서 변환 한 것입니다. Exchange 서버 설정을 방해하지 않고이를 방지하는 방법. – pkrish