我收到错误代码 500。 以下是我对 https://outlook.office365.com/Microsoft-Server-ActiveSync?cmd=SendMail&User=username@domain.com&DeviceId=A6B9A5DB2E334477B48832011B55F06E&DeviceType=mobile 的要求
<?xml version="1.0" encoding="utf-8"?>
<SendMail xmlns="ComposeMail:">
<ClientId>633724606026842453</ClientId>
<Mime>From: fakeuser@Contoso.com To: xxxx@gmail.com Cc: Bcc: Subject: From NSync MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3350 This is the body text.</Mime>
</SendMail>
内容类型:消息/RFC822
请注意,我没有将请求数据转换为 base64。
响应:
Header : {
"Cache-Control" = private;
"Content-Length" = 1208;
"Content-Type" = "text/html";
Date = "Tue, 10 Mar 2015 16:13:51 GMT";
"MS-Server-ActiveSync" = "15.1";
Server = "Microsoft-IIS/8.0";
"X-AspNet-Version" = "4.0.30319";
"X-BEServer" = BY2PR06MB903;
"X-BackEndHttpStatus" = 500;
"X-CalculatedBETarget" = "BY2PR06MB903.namprd06.prod.outlook.com";
"X-DiagInfo" = BY2PR06MB903;
"X-FEServer" = SG2PR03CA0034;
"X-MS-BackOffDuration" = "L/-470";
"X-Powered-By" = "ASP.NET";
"request-id" = "54541d26-9bdb-41a4-b7e1-3fddcc4f4915"; }
响应代码 : 500
更新
我已经尝试了 14.1 版本,因为我正在将 mime 文本转换为 base64 文本并将 xml 转换为 wbxml。我已将内容类型设置为application/vnd.ms-sync.wbxml。现在我得到的状态代码 102 状态无效的 WBXML,所以不确定我的请求有什么问题。
WBXML 只能在协议版本 14.0/14.1 中使用。对于早期版本,邮件的MIME表示形式应在SendMail请求的正文中发送(请参阅[MS-ASCMD].pdf中的2.2.2.16节,链接:https://msdn.microsoft.com/en-us/library/dd299441.aspx)。
我终于解决了这个问题。这是由于哑剧数据。我们需要为要传递的每个参数添加(新行)。
对于 ActiveSync 14.1(使用 WBXML):来自 MS 文档 Mime 元素必须是不透明的 BLOB https://msdn.microsoft.com/en-us/library/gg663453(v=exchg.80).aspx。因此,您必须将 Mime 数据写入 CDATA。
<?xml version="1.0" encoding="utf-8"?>
<SendMail xmlns="ComposeMail:">
<ClientId>633724606026842453</ClientId>
<Mime>
<![CDATA[From: xxx@xxx.com
To: xxx@xxx.com
Subject: Mail Subject
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Test body]]>
</Mime>
</SendMail>