我目前正在处理从Exchange收到的电子邮件中提取主题和附件的脚本。
为此,我找到了 php-ews 并使用one of the provided examples来检索附件。
当我尝试运行它时,脚本会抛出ErrorInvalidIdMalformed: Id is malformed
。
我猜想我从Outlook获取MessageID时出错了,但似乎只有一个字段标有" MessageID"。它看起来像这样: 3cbab9c9ad50410592b55f7ade96a57a @ [域] .FR
我有什么遗漏的吗?
感谢您的帮助。
答案 0 :(得分:0)
ErrorInvalidIdMalformed
表示传入的MessageID
字符串存在结构性问题。
但是,您发布的MessageID
似乎没有任何问题。
您可以尝试通过 XmlSerializer 序列化GetItemRequest
实例,然后检查实际的xml是否存在问题。 (也许可以将实际的xml发布到你的问题中)。
我猜你的xml中缺少一个字符,否则它会包含不应该的内容。
答案 1 :(得分:0)
看起来您将EWSId与MessageId混淆,EWSid是可用于访问项目的标识符,请参阅https://msdn.microsoft.com/en-us/library/office/dn605828%28v=exchg.150%29.aspx进行完整讨论。
您实例中的messageId 3cbab9c9ad50410592b55f7ade96a57a @ [domain] .fr是Internet MessageID,通常由第一个MTA分配来处理Message。您可以使用EWS和FindItem操作(例如Exchange Web Service find EmailMessage by "Message-ID" header)搜索具有此ID的消息,但您无法使用该ID直接绑定到该项目。 (如果你只想要一个ewsId,你可以绑定直接使用EWSEditor https://ewseditor.codeplex.com/来获得一个可绑定的例子)