【问题标题】:Ideas for storing e-mail messages in a Delphi client server application在 Delphi 客户端服务器应用程序中存储电子邮件消息的想法
【发布时间】:2011-06-21 21:13:57
【问题描述】:

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

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

想象一下这种情况:

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

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

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

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

你可以评论吗?

【问题讨论】:

  • 您为什么要尝试将电子邮件存储在邮件服务器之外?邮件服务器非常擅长存储电子邮件。如果您将 Outlook 与 Exchange 结合使用,则最新版本具有特定的邮件接收功能,它始终具有路由传入和传出邮件的功能。其他服务器也有。
  • @ldsandon 因为我有一个存储所有相关数据的应用程序。许多客户甚至没有邮件服务器(有些使用 pop3 免费电子邮件)。很多沟通都是无用的。最重要的是手动存储在有意义的地方(附加到订单、客户……)。这就是它的工作方式,这就是我发现增值的方式。

标签: delphi email outlook eml


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-28
    • 2015-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多