hMailServer - 服务器脚本 - 触发外部DLL功能?

时间:2016-04-14 13:21:46

标签: c# signalr hmail-server email-processing

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

情景可能是:

  1. 来自发件人的消息来自hMailServer
  2. 某些触发器启动
  3. 在外部DLL中触发调用函数,该函数将解析电子邮件正文中有关收件人,主题,消息perex和 附件计数到特殊数据库表以进行速度列表和 电子邮件通知目的,可以位于相同的 数据库为hmailserver
  4. 让消息传递
  5. 目标:通过SQL查询获取包含来自,主题,主题,消息perex(前100个字符),附件标志和读取标志的所有电子邮件的即时信息,而无需连接到IMAP或PO3。因此,使用一个SQL查询,我可以获取所有帐户的所有通知,并通过signalR发送它们。

    我意识到在hqlserver的MS SQL数据库中有一个名为hm_messages的表,它在电子邮件到达时自动填充,但不包含主题,大多数没有发件人,绝对没有正文和附件计数。该表中的行仅包含有关* .eml文件的帐户,文件夹,标志,日期和名称的信息。我可以用SQLCLR函数编写一个触发器,它可以像上面提到的那样做,但即使我有* .eml文件名,我也没有它在硬盘上的实际位置。所以我回到原点。

    否则我必须在时间循环中从所有帐户下载邮件,这会窃取我的服务器CPU和内存,尤其是那里有大约60个电子邮件帐户和数千封邮件,并且必须全部迭代它们。

2 个答案:

答案 0 :(得分:0)

hMailServer支持在VBScript / JScript中编写脚本,并提供events来指示新邮件的到达。

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

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

答案 1 :(得分:0)

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

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

要通过运行时绑定使用它,您只需调用任何hMailServer COM API对象 与VB脚本。如果要通过C#.NET或VB.NET或本机C / C ++访问hMailServer 您需要导入hMailServers Typelibe(将hMailServer.tlb导入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,但不早于此。