7

Ten problem wyszedł na jaw, gdy próbowałem wysłać wiadomość HTML z obrazkami wbudowanymi (załączniki) za pośrednictwem EWS. Jednak wycofałem się do najprostszej postaci i odkryłem, że nie mogę nawet wysyłać wiadomości w formacie HTML.Jak wysłać HTML (multipart/alternative) z Exchange Web Services (2010 SP1)

Używam C#, .NET 4, EWS API 1.1, Exchange Server 2010 SP1.

Oto sedno mojego kodu:

ExchangeConnection = new ExchangeService(ExchangeVersion.Exchange2010_SP1); 
ExchangeConnection.Credentials = new WebCredentials(Username, Password, Domain); 
ExchangeConnection.Url = new Uri(ServiceURI); 

string MailBody = @"<html><head></head><body> 
    This is a <b>test</b> <strong>HTML</strong> <em>message</em>.<br><br> 
    Did it work?</body></html>"; 

NewMessage = new EmailMessage(ExchangeConnection); 
NewMessage.Subject = "Test HTML Message #001"; 
NewMessage.Body = MailBody; 
NewMessage.Body.BodyType = BodyType.HTML; 
NewMessage.ToRecipients.Add("[email protected]"); 
NewMessage.Send(); 

Używając tego kodu pojawia się komunikat o następującej treści:

Subject: Test HTML Message #001 
Thread-Topic: Test HTML Message #001 
Thread-Index: Acuy3U6nqQTa4W4ZQu6ueHPb2nPDPg== 
Date: Thu, 13 Jan 2011 04:49:48 +0000 
Message-ID: <2FDB41070D0AC24DB5BC8B[email protected]> 
Accept-Language: en-US 
Content-Language: en-US 
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [x.x.x.x] 
Content-Type: text/plain; charset="us-ascii" 
Content-Transfer-Encoding: quoted-printable 
MIME-Version: 1.0 
X-Spam: [F=0.2000000000; CM=0.500; S=0.200(2010122901)] 
X-MAIL-FROM: <[email protected]> 
X-SOURCE-IP: [67.136.148.58] 
X-AnalysisOut: [v=1.0 c=1 a=WYc53Y7r_f4A:10 a=BLceEmwcHowA:10 a=kj9zAlcOel] 
X-AnalysisOut: [0A:10 a=xqWC_Br6kY4A:10 a=ERe/uVw5acJt2lgRGY+7Og==:17 a=10] 
X-AnalysisOut: [TGqZ3wK2PL4t1FdnoA:9 a=mfhh-WWaJa5gWHOyyF854Vzt7EAA:4 a=Cj] 
X-AnalysisOut: [uIK1q_8ugA:10] 

This is a test HTML message. 

Did it work? 

Nie ma deklaracja MIME i nie ma text/html Sekcja.

Gdybym wysłać podobną wiadomość poprzez Outlook (na tym samym serwerze Exchange) mam coś takiego:

Subject: Test From Outlook 
Thread-Topic: Test From Outlook 
Thread-Index: AcuzMwJCFB8PS6wYQeeV4IeSkT/mxQ== 
Date: Thu, 13 Jan 2011 15:03:17 +0000 
Message-ID: <[email protected]> 
Accept-Language: en-US 
Content-Language: en-US 
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [x.x.x.x] 
Content-Type: multipart/alternative; 
    boundary="_000_E026BAD23A27DB42B74F0DB569E9986977F237CHALLENGERDenverZ_" 
MIME-Version: 1.0 
X-Spam: [F=0.2000000000; CM=0.500; S=0.200(2010122901)] 
X-MAIL-FROM: <[email protected]> 
X-SOURCE-IP: [67.136.148.58] 
X-AnalysisOut: [v=1.0 c=1 a=olvCdMnC_oMA:10 a=BLceEmwcHowA:10 a=xqWC_Br6kY] 
X-AnalysisOut: [4A:10 a=ERe/uVw5acJt2lgRGY+7Og==:17 a=2iPVs5MlqxP_VJ4oz58A] 
X-AnalysisOut: [:9 a=x0_hJeNGqEWpZ67nkUaF-VHO8CMA:4 a=CjuIK1q_8ugA:10 a=yM] 
X-AnalysisOut: [hMjlubAAAA:8 a=SSmOFEACAAAA:8 a=bSa8Y9cTgW9e4uXm0lgA:9 a=w] 
X-AnalysisOut: [EVqP49dmlVP1afgSrUA:7 a=MTMROL1LpFqQeTH2_C9armvf4mgA:4] 

--_000_E026BAD23A27DB42B74F0DB569E9986977F237CHALLENGERDenverZ_ 
Content-Type: text/plain; charset="us-ascii" 
Content-Transfer-Encoding: quoted-printable 

This is an HTML message. 

What do the headers look like? 

Tony 

--_000_E026BAD23A27DB42B74F0DB569E9986977F237CHALLENGERDenverZ_ 
Content-Type: text/html; charset="us-ascii" 
Content-Transfer-Encoding: quoted-printable 

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" xmlns:o=3D"urn:schemas-micr= 
... the correct html code for the message follows here ... 

Czy ktoś może mi wyjaśnić, w jaki sposób pojawia się komunikat podobny do drugiego za pośrednictwem kodu za pomocą EWS? Dzięki!

Odpowiedz

2

Po prostu miałem bardzo podobny problem. Ostatecznie przybiliśmy go do jednego konta, które otrzymało zmanipulowaną wersję e-maila zamiast właściwego wieloczęściowego tekstu MIME i HTML. Okazuje się, że problem polegał na tym, że to konto zostało skonfigurowane w Exchange, aby "Używać ustawień domyślnych" dla wiadomości tekstowych w formacie RTF (na karcie Ogólne), gdy inne konta były ustawione na "Nigdy".

Problem polegał na tym, że Exchange wiedział o tym, że kontaktowy adres e-mail został wysłany i próbował być "inteligentny" i wysłać go w zastrzeżonym formacie dla programu Outlook, ale klient dla tego adresu nie korzystał z programu Outlook, a więc nie był można poprawnie wyświetlić wiadomość e-mail. Myślę, że można zmienić to ustawienie na poziomie globalnym, a nie przez użytkownika, ale nie jestem pewien, gdzie to jest.

Powodem ich działania podczas wysyłania za pośrednictwem programu Outlook jest to, że program Outlook 2010 jest w stanie wysłać wiadomość e-mail w sposób, który zmusza wiadomość do formatu HTML, podczas gdy interfejs API zarządzanego przez EWS wydaje się nie być w stanie tego zrobić.

0

Właśnie znalazłem ten page, który wyjaśnia, co się dzieje i jak zmienić ustawienie.

To ich wniosek:

Ostateczną rzeczą sprawdziliśmy który ujawnił, co problemem było uruchomić następującą wymianę PowerShell „get-remotedomain | fl ". Następnie zauważyliśmy, że typ zawartości został ustawiony na MimeText, który "konwertuje wszystkie wiadomości na wiadomości MIME, które używają formatowania tekstu" (tzn. Zwykły tekst). Następnie zmieniliśmy typ zawartości na mimehtmltext (konwertuje wiadomości na wiadomości MIME, które używają formatowania HTML, o ile oryginalna wiadomość nie jest wiadomością tekstową.) Jeśli oryginalna wiadomość jest wiadomością tekstową, wiadomość wychodząca jest wiadomością MIME, która używa formatowania tekstu. uruchamia następujące polecenie "get-remotedomain | set-remotedomain -ContentType MimeHtmlText ".