将 Outlook 邮件项目存档到 SQL Server

将 Outlook 邮件项目存档到 SQL Server

我正在寻找(但目前还没有找到)一种解决方案来将 Outlook 中的电子邮件项目存档到 SQL Server 中。

我的 PST 开始变得非常大,我希望以某种方式将旧电子邮件提取到 SQL Server 中,这样我仍可以轻松找到需要的邮件。我更喜欢使用 SQL Server 作为存储介质,因为我熟悉它,而且它非常可靠 - 我不想收集 PST 文件或 CHM 文件或类似的东西。

有人知道这样的解决方案吗?

答案1

这可能不是您正在寻找的,但它是一个开始(而且免费!)。这是我之前编写的 Outlook 宏,专门用于此目的。最大的问题是它不支持附件,这对您来说可能是一个难题,但我还是想分享一下。您单击要导出的文件夹,它会将消息信息发送到 SQL 表。如果您想要更多字段,修改它很容易。

Sub ExportMsgData()
    Dim objConn As New ADODB.Connection
    Dim rsMsgs As New ADODB.Recordset
    Dim strDBFile As String

    On Error Resume Next
    Set objConn = New ADODB.Connection
    With objConn
        .ConnectionString = "Provider=SQLOLEDB;data source=MySQLSvr;initial catalog=MyMail;integrated security=SSPI"
        .Open
    End With

    Set objExp = Application.ActiveExplorer
    If objExp.Selection.Count > 0 Then
        If objExp.Selection(1).Class = Outlook.OlObjectClass.olMail Then
            For Each objMsg In objExp.Selection
                With rsMsgs
                    .CursorLocation = adUseClient
                    .Open "SELECT TOP 1 * FROM t_Msg", objConn, adOpenDynamic, adLockBatchOptimistic
                    .AddNew
                    !MsgFrom = objMsg.SENDERNAME
                    !MsgFromEmail = objMsg.SenderEmailAddress
                    !MsgDateSent = objMsg.SentOn
                    !MsgDateReceived = objMsg.ReceivedTime
                    !MsgSubject = objMsg.Subject
                    .UpdateBatch
                    rsMsgs.Close
                End With
            Next
        End If
    End If

    objConn.Close
    Set rsMsgs = Nothing
    Set objConn = Nothing
End Sub

答案2

我仍然很惊讶没有人能真正找到答案....你们是怎么存档电子邮件的?6 个月后就把它们从 Outlook 或 Thunderbird 中扔掉,然后忘掉它们?把它们存储为 .txt 或 .eml 文件?

无论如何,到目前为止我发现的最佳解决方案不是使用 SQL Server - 但它仍然看起来非常强大和有用: MailStore 首页- 个人/家庭使用免费,而且相当好用。可惜它不支持直接导入 .pst 文件 :-( - 只有 $$$$$ 专业服务器版本才有此功能,但到目前为止,这是这款应用唯一的苦乐参半的时刻。

答案3

我用来存档 Outlook 中电子邮件的简单解决方案如下:

  1. 在 Outlook 中,请勿执行导出操作。而是打开要存档邮件的文件夹。
  2. 根据需要对消息进行排序。我按发送日期排序,以便允许任意时间范围。
  3. 突出显示要复制的消息。(单击、Shift+单击或按Ctrl +A可复制全部消息。)
  4. 在里面文件菜单,点击另存为并输入适当的文件名。这将为您提供一个非常简单的文本文件,其中包含所有选定电子邮件的连续文本。如果您想要单独的消息,不幸的是,您需要一次选择一条消息。
  5. 在 SQL Server 中,创建一个表,其中包含一个标识列,后面跟着一个列。将您的文本文件导入此表,该表通过标识保留物理顺序,并为每varchar(4000)行保留一个文本列。根据您的 SQL 技能,您可以根据需要解析此表。许多 SQL 函数(例如但不限于、、、、、、、、、、、等)LTRIM允许您从文本字符串中提取到变量中 RTRIMLIKEISNUMERICSUBSTRINGLEFTRIGHTLENPATINDEXCHARINDEX

我使用这种方法从我的经纪人的每日电子邮件中提取每日投资持有价格报价,并为 Quicken 创建价格更新文件,而不是依赖我的经纪人的数据和 Quicken 的任意在线功能。

如果您只想存档邮件,Mail Store Home 免费应用程序非常棒,它还具有各种文件创建选项。试试吧。您甚至可以用它将邮件放回到 Outlook 文件夹中。

相关内容