1

也许这是一个虚拟问题并且存在更好的方法,但我想知道是否有可能使用服务器端脚本捕获传入电子邮件的事件,并且在该脚本内部将是外部 DLL 调用或连接到数据库并写入一些元数据的脚本来自传入消息(与外部 DLL 相同)?

场景可能是:

  1. 邮件从发件人发送到 hMailServer
  2. 一些触发器开始
  3. 外部 DLL 中的触发调用函数将解析电子邮件正文 a 将有关收件人、主题、消息 perex 和附件计数的数据写入特殊数据库表以用于快速列表和电子邮件通知目的,该表可能与 hmailserver 位于同一数据库中
  4. 让消息被传递

目标:获得有关所有电子邮件的即时信息,其中包含发件人、收件人、主题、消息 perex(前 100 个字符)、附件标志和读取标志,可通过 SQL 查询访问,而无需连接到 IMAP 或 PO3。因此,使用一个 SQL 查询,我可以获得所有帐户的所有通知并通过 signalR 发送它们。

我意识到在 hmailserver 的 MS SQL 数据库中是名为 hm_messages 的表,它在电子邮件到达时自动填充,但不包含主题,主要没有发件人,绝对没有正文和附件计数。该表中的行仅包含有关 *.eml 文件的帐户、文件夹、标志、日期和名称的信息。我可以使用 SQLCLR 函数编写一个触发器,该函数可以执行与上述相同的操作,但即使我有 *.eml 文件名,我也没有它在硬盘驱动器上的实际位置。所以我回到第一方。

否则我必须在一个时间循环中从所有帐户下载消息,这会窃取我的服务器 CPU 和内存,尤其是在其中有大约 60 个电子邮件帐户和数千条消息并且必须对其进行迭代的情况下。

4

2 回答 2

1

hMailServer支持 VBScript/JScript 中的脚本并提供事件以指示新消息到达。

两种脚本语言都支持 COM,因此可以使用例如 ADO 连接到数据库或可以与(后期绑定的)COM Visible .Net 程序集进行互操作。

所以是的,它可以满足您的要求,但我会仔细考虑这样做的可扩展性

于 2016-04-14T13:39:55.687 回答
0

当您发现自己时,您可以使用 VB-Script 和 JScript 来运行由 C:\Program Files (x86)\hMailServer\Events\EventHandlers.vbs 调用的 hMailServer 特定事件

您还可以使用任何可以访问 Microsoft COM 技术的 COM/DCOM 语言或工具包。hMailServers Main Server Object 是一个 OutOfProcess 服务器,它支持后期绑定和基于 Typelib 的后期访问。

要通过运行时绑定使用它,您只需使用 VB 脚本调用任何 hMailServer COM API 对象。如果您想通过 C#.NET 或 VB.NET 或本机 C/C++ 访问 hMailServer,您需要导入 hMailServers Typelibe(hMailServer.tlb it hMailServer \bin 文件夹)

如何从 C# 和其他语言访问 hMailServer 的示例可以在以下文章中找到:

C#.NET https://www.hmailserver.com/forum/viewtopic.php?f=21&t=31507

VB.NET https://www.hmailserver.com/forum/viewtopic.php?f=21&t=31508

本机 C/C++ (Win32/Win64) https://www.hmailserver.com/forum/viewtopic.php?f=21&t=31510

COM-API 文档 https://www.hmailserver.com/documentation/latest/?page=com_objects

所需工具:Visual Studio 2013,但不是更早版本,也不是更高版本。

于 2019-07-20T10:27:17.070 回答