7

Dieses Problem trat auf, als ich versuchte, eine HTML-Nachricht mit eingebetteten Bildern (Anlagen) über EWS zu senden. Ich habe jedoch auf die einfachste Form zurückgesetzt und festgestellt, dass ich nicht einmal HTML-Nachrichten senden kann.Wie sende ich HTML (mehrteilig/alternativ) von Exchange Web Services (2010 SP1)

Ich verwende C#, .NET 4, EWS API 1.1, Exchange Server 2010 SP1. Hier

ist der Kern meines Code:

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(); 

diesen Code verwendet ich eine Nachricht mit folgendem Inhalt erhalten:

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: <[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? 

Es gibt keine MIME-Deklaration und es gibt keinen text/html Sektion.

Wenn ich eine ähnliche Nachricht über Outlook senden (auf demselben Exchange-Server) ich so etwas wie diese:

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 ... 

Kann jemand mir erklären, wie eine Nachricht wie die zweiten durch den Code zu bekommen mit EWS? Vielen Dank!

Antwort

2

Ich hatte gerade ein sehr ähnliches Problem. Wir haben es schließlich auf einen bestimmten Account heruntergeschrieben, der anstelle des richtigen mehrteiligen MIME-Textes und HTML eine verfälschte Version der E-Mail erhielt. Es stellte sich heraus, dass dieses Konto in Exchange eingerichtet wurde, um "Standardeinstellungen verwenden" für MAPI-Rich-Text-E-Mails (auf der Registerkarte Allgemein) zu verwenden, wenn andere Konten auf "Nie" festgelegt wurden.

Also das Problem war im Grunde, dass Exchange wusste über die Kontakt-E-Mail gesendet und versucht, "smart" und senden Sie es in proprietäre Format für Outlook, aber der Client für diese Adresse nicht mit Outlook und so waren sie nicht kann die E-Mail nicht korrekt anzeigen. Ich denke, es ist auch möglich, diese Einstellung auf globaler Ebene statt durch Benutzer zu ändern, aber ich bin mir nicht sicher, wo das ist.

Der Grund, warum es funktioniert, wenn Outlook über Outlook gesendet wird, ist, dass Outlook 2010 in der Lage ist, die Nachricht in HTML-Format zu senden, während EWS-verwaltete API nicht in der Lage ist.

0

Ich habe gerade diese page gefunden, die erklärt, was passiert und wie man die Einstellung ändert.

Dies ist ihr Fazit:

Das letzte, was wir überprüft, die zeigte, was die Ausgabe der folgenden Austausch Powershell „Get-Remote laufen war | fl ". Wir haben dann festgestellt, dass der Inhaltstyp auf MimeText gesetzt wurde, der "alle Nachrichten in MIME-Nachrichten konvertiert, die Textformatierung verwenden" (z. B. einfacher Text). Wir haben dann den Inhaltstyp in mimehtmltext geändert (Konvertiert Nachrichten in MIME-Nachrichten, die HTML-Formatierung verwenden, sofern die ursprüngliche Nachricht keine Textnachricht ist. Wenn die ursprüngliche Nachricht eine Textnachricht ist, ist die ausgehende Nachricht eine MIME-Nachricht mit Textformatierung) Ausführen des folgenden Befehls "get-remotedomain | set-remotedomain -ContentType MimeHtmlText ".