使用 12.1 协议的 ActiveSync SendMail 命令
ActiveSync SendMail command using 12.1 protocol
我收到错误代码 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>
内容类型:message/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 节,link:https://msdn.microsoft.com/en-us/library/dd299441.aspx)。
我终于解决了这个问题。这是由于在 mime 数据中。我们需要为我们传递的每个参数添加 \n(新行)。
对于 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>
我收到错误代码 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>
内容类型:message/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 节,link:https://msdn.microsoft.com/en-us/library/dd299441.aspx)。
我终于解决了这个问题。这是由于在 mime 数据中。我们需要为我们传递的每个参数添加 \n(新行)。
对于 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>