【问题标题】:Store Exchange 2010 Emails in SQL在 SQL 中存储 Exchange 2010 电子邮件
【发布时间】:2010-05-18 12:40:58
【问题描述】:

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

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

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

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

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

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

谢谢, 迈克

【问题讨论】:

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


    【解决方案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>
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 我想我说得不够清楚。 XML 列正是我的计划,但获取 xml 架构是我的问题。但是感谢您确认我的方法。
      猜你喜欢
      • 1970-01-01
      • 2011-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多