在SQL中存储Exchange 2010电子邮件

时间:2010-05-18 12:40:58

标签: xml sql-server-2005 email xsd exchange-server-2010

我有一个应用程序,它会随着电子邮件的到来启动程序流程。我需要将电子邮件链接到我的应用程序,我将通过消息上的自定义属性来执行此操作。

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

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

我的问题是获取Message的XML架构。我似乎无法在任何地方找到它,并且似乎没有太多的在线内容将消息放入SQL中。

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

欢迎任何帮助或帮助。

谢谢, 麦克

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

您可以将其存储在XML列中,索引该列并搜索它。

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