0

这里和那里有很多关于存储电子邮件的建议。不知何故,我正在编写一个 Outlook 插件,将电子邮件从收件箱/已发送文件夹直接发送到我的应用程序。

所以只有真正有趣的才会被保存。我决定把它保存在哪里。

想象一下这种情况:

我收到一位客户的电子邮件。由我决定是否应该将其保存在客户或该客户所做的订单 24 上。所以这就是为什么我要添加,而不是在一段时间后自动存储电子邮件=噪音。

这就是说,如何存储电子邮件?对于我通过 Outlook 接收或发送的电子邮件,我的想法可能是将整个文件保存在 blob 字段中(因此是 eml 文件),我也可以将其他信息(如主题)保存在另一个文本字段中。但是当我从我的应用程序中写一封电子邮件时,问题就来了。

在这种情况下,我不会生成 eml 文件,而是通过 MAPI 数据发送到 Outlook 以撰写我将使用 Outlook 发送的电子邮件(因此在这种情况下我无法保存 eml),或者我直接使用 Indy 发送。同样在这种情况下,我没有 eml 文件...

一个想法可能是我自动撰写的所有电子邮件都有一个特殊的标志,插件可以识别,因此当我发送邮件时,它会被存储回数据库。因此,在这种情况下,我还可以保存从我的应用程序发送的邮件的 eml。

你可以发表评论吗?

4

1 回答 1

0

首先,您必须决定存储哪些信息。其余的只是到达那里的一种手段。

一种选择是存储 .msg 文件(您已发布相关问题,表明您对 MAPI 并不陌生)而不是 .eml 文件。使用 MAPI,您可以将创建的 IMessage 存储为 .msg 文件(有点痛苦)。但是,在实际发送消息之前,并非所有 mapi 道具都会设置,因此您可能需要为此挂钩 Outlook 发送项目文件夹。

一个更直接的解决方案是直接从源代码生成 .eml(或您喜欢的任何基于文本的格式)。发送时,获取您的源数据,生成对 Outlook 的正确 MAPI 调用并生成 .eml 并将其直接存储到您的数据库中。接收时,让 Outlook 直接保存为 .eml。

就个人而言,我根本不会使用 .eml 进行存储。我会将我特别感兴趣的数据(例如到/从地址)解析为单独的列。最后,您可能正在使用数据库进行数据检索。当您不将所有内容存储在单个备忘录/blob 字段中时,数据库往往会做得更好。:)

于 2011-02-05T15:23:23.083 回答