1

我有一个应用程序,它将在电子邮件到达时启动程序流程。我需要将电子邮件链接到我的应用程序,这将通过消息上的自定义属性来完成。

然后,我将需要永久存储电子邮件以供参考。由于 Exchange 2010 仅支持邮箱中的 10Gb 和 100,000 个项目(不使用 PST 文件),因此我需要将邮件放入更永久的存储区 SQL。

我正在运行 SQL 2005,我想将电子邮件存储在其中,但不作为图像存储,因此如果需要,我可以搜索它。当我使用 Exchange Web 服务来获取电子邮件时,我已经拥有了消息的完整 XML。我认为将它存储在一个 XML 字段中,该字段具有与之关联的 Message XML 模式(以帮助提高性能)应该给我最好的解决方案。

我的问题是获取消息的 XML 模式。我似乎在任何地方都找不到它,而且似乎没有太多在线内容可用于将消息放入 SQL 中。

我是否将这一切都错了,还是有更好的解决方案?该邮箱预计每年将收到超过 60 万封电子邮件。

任何帮助或帮助都会很高兴地得到。

谢谢,迈克

4

2 回答 2

1

我使用XMLSpy生成基于 XML 文件的模式。它不会是完美的,但它对我有用。

XMLSpy 生成的比以下更多,但限制性太强,SQL 也没有对其进行验证。所以我拿出了一些额外的东西并保持它的美观和简单。

这是它生成的 MessageType XML Schema;

<?xml version="1.0" encoding="UTF-8"?>
<!--W3C Schema generated by XMLSpy v2010 rel. 3 (x64) (http://www.altova.com)-->
<xs:schema xmlns:n1="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:import namespace="http://schemas.microsoft.com/exchange/services/2006/types" schemaLocation="messagetype1.xsd"/>
    <xs:element name="MessageType">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="n1:ItemId"/>
                <xs:element ref="n1:ParentFolderId"/>
                <xs:element ref="n1:ItemClass"/>
                <xs:element ref="n1:Subject"/>
                <xs:element ref="n1:Sensitivity"/>
                <xs:element ref="n1:DateTimeReceived"/>
                <xs:element ref="n1:Size"/>
                <xs:element ref="n1:Importance"/>
                <xs:element ref="n1:IsSubmitted"/>
                <xs:element ref="n1:IsDraft"/>
                <xs:element ref="n1:IsFromMe"/>
                <xs:element ref="n1:IsResend"/>
                <xs:element ref="n1:IsUnmodified"/>
                <xs:element ref="n1:DateTimeSent"/>
                <xs:element ref="n1:DateTimeCreated"/>
                <xs:element ref="n1:DisplayCc"/>
                <xs:element ref="n1:DisplayTo"/>
                <xs:element ref="n1:HasAttachments"/>
                <xs:element ref="n1:Culture"/>
                <xs:element ref="n1:EffectiveRights"/>
                <xs:element ref="n1:LastModifiedName"/>
                <xs:element ref="n1:LastModifiedTime"/>
                <xs:element ref="n1:IsAssociated"/>
                <xs:element ref="n1:WebClientReadFormQueryString"/>
                <xs:element ref="n1:ConversationId"/>
                <xs:element ref="n1:Sender"/>
                <xs:element ref="n1:IsReadReceiptRequested"/>
                <xs:element ref="n1:ConversationIndex"/>
                <xs:element ref="n1:ConversationTopic"/>
                <xs:element ref="n1:From"/>
                <xs:element ref="n1:InternetMessageId"/>
                <xs:element ref="n1:IsRead"/>
                <xs:element ref="n1:ReceivedBy"/>
                <xs:element ref="n1:ReceivedRepresenting"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>
于 2010-05-28T07:42:03.503 回答
0

您可以将其存储在 XML 列中,对该列进行索引并通过它进行搜索。

至于消息 xml 架构,可能有一个,但我找不到。

于 2010-05-18T12:52:25.870 回答