exchange-server - 如何从 Exchange Web 服务 (2010 SP1) 发送 HTML(多部分/替代)

标签 exchange-server exchangewebservices ews-managed-api exchange-server-2010

当我尝试通过 EWS 发送带有内嵌图像(附件)的 HTML 消息时,这个问题就暴露了出来。然而,我已经退回到最简单的形式,发现我什至无法发送 HTML 消息。

我使用的是 C#、.NET 4、EWS API 1.1、Exchange Server 2010 SP1。

这是我的代码的核心:

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("tony@zierniemann.com");
NewMessage.Send();

使用该代码,我收到一条消息,内容如下:
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: <2FDB41070D0AC24DB5BC8B80751063630B74A5@xxxxx.com>
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: <planit@xxxxx.com>
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?  

没有 MIME 声明,也没有 text/html 部分。

如果我通过 Outlook(在同一 Exchange 服务器上)发送类似的消息,我会得到如下信息:
Subject: Test From Outlook
Thread-Topic: Test From Outlook
Thread-Index: AcuzMwJCFB8PS6wYQeeV4IeSkT/mxQ==
Date: Thu, 13 Jan 2011 15:03:17 +0000
Message-ID: <E026BAD23A27DB42B74F0DB569E9986977F237@CHALLENGER.DenverZoo.lan>
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: <tonyn@xxxx.com>
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 ...

谁能向我解释如何使用 EWS 通过代码获取第二条消息?谢谢!

最佳答案

我刚刚遇到了一个非常相似的问题。我们最终将其确定为一个特定帐户,该帐户正在接收电子邮件的损坏版本,而不是正确的多部分 MIME 文本和 HTML。事实证明,问题是该帐户在 Exchange 中设置为在其他帐户设置为“从不”时为 MAPI 富文本电子邮件(在“常规”选项卡中)设置“使用默认设置”。

所以问题基本上是 Exchange 知道要发送到的联系人电子邮件并试图“智能”并以 Outlook 的专有格式发送它,但该地址的客户端没有使用 Outlook,因此他们无法正确查看电子邮件。我认为也可以在全局级别而不是由用户更改此设置,但我不确定那在哪里。

它在通过 Outlook 发送时起作用的原因是 Outlook 2010 能够以强制邮件为 HTML 格式的方式发送电子邮件,而 EWS 托管 API 似乎无法做到这一点。

关于exchange-server - 如何从 Exchange Web 服务 (2010 SP1) 发送 HTML(多部分/替代),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4681798/

相关文章:

c# - 通过电子邮件发送至 WorkItem - EWS 2007_SP1 和 TFS 2010

java - 将 Exchange 文件夹分类为可分辨文件夹和普通文件夹

exchangewebservices - Exchange Web 服务管理,获取已删除的约会

c# - 如何使用 EWS 托管 API 在 Exchange 2007 中获取项目 Web 客户端 ID

c# - UniqueBody是不是很独特?

Python:如何通过 IMAP 将带有 BCC 收件人的电子邮件草稿存储到 Exchange Server?

ssl - 自 SSL - 证书无效

xml - 交换 : Find items in EWS conversation using XML request?

powershell - 无法在 Exchange 管理控制台中将变量与 Get-User -Filter 一起使用

outlook - 从存储在 Exchange 中的 ContactInfo 获取 Smtp 电子邮件