7

Este problema salió a la luz cuando estaba tratando de enviar un mensaje HTML con imágenes en línea (archivos adjuntos) a través de EWS. Sin embargo, he retrocedido a la forma más simple y he descubierto que ni siquiera puedo enviar mensajes HTML.Cómo envío HTML (multiparte/alternativa) desde los Servicios web de Exchange (2010 SP1)

Estoy usando C#, .NET 4, EWS API 1.1, Exchange Server 2010 SP1.

Aquí es el centro de mi código:

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

El uso de ese código recibo un mensaje con el siguiente contenido:

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? 

no haya una declaración MIME y no hay text/html sección.

Si envío un mensaje similar a través de Outlook (en el mismo servidor de Exchange) me sale algo como esto:

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

Puede alguien explicarme cómo conseguir un mensaje como el segundo a través del código utilizando EWS? ¡Gracias!

Respuesta

2

Acabo de tener un problema muy similar. Finalmente lo definimos en una cuenta en particular que recibía una versión destrozada del correo electrónico en lugar del correcto texto y HTML MIME de varias partes. Resulta que el problema fue que esta cuenta se configuró en Exchange para tener "Usar configuración predeterminada" para correos electrónicos de texto enriquecido MAPI (en la pestaña General), cuando otras cuentas se configuraron como "Nunca".

El problema radicaba básicamente en que Exchange sabía que el correo electrónico de contacto se enviaba e intentaba ser "inteligente" y se lo enviaba en formato propietario para Outlook, pero el cliente de esa dirección no usaba Outlook y entonces no no se puede ver el correo electrónico correctamente Creo que también es posible cambiar esta configuración a nivel global en lugar de por usuario, pero no estoy seguro de dónde está.

La razón por la que funciona cuando se envía a través de Outlook es que Outlook 2010 puede enviar el correo electrónico de forma que obligue al mensaje a estar en formato HTML, mientras que la API administrada por EWS no parece poder hacerlo.

0

Acabo de encontrar este page que explica lo que está sucediendo y cómo cambiar la configuración.

Esta es su conclusión:

La última cosa que nos registramos, que reveló lo que el problema era ejecutar el siguiente cambio de PowerShell “Get-remotedomain | fl ". Luego vimos que el tipo de contenido se estableció en MimeText que "convierte todos los mensajes a mensajes MIME que usan formato de texto" (es decir, texto sin formato). Luego cambiamos el tipo de contenido a mimehtmltext (Convierte mensajes en MIME que usan formato HTML, a menos que el mensaje original sea un mensaje de texto. Si el mensaje original es un mensaje de texto, el mensaje saliente es un mensaje MIME que utiliza el formato de texto) ejecutando el siguiente comando "get-remotedomain | set-remotedomain -ContentType MimeHtmlText ".

Cuestiones relacionadas