【问题标题】:hMailServer - server scripts - trigger external DLL function?hMailServer - 服务器脚本 - 触发外部 DLL 函数?
【发布时间】:2016-04-14 13:21:46
【问题描述】:

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

场景可能是:

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

    hMailServer 支持 VBScript/JScript 中的脚本,并提供 events 来指示新消息到达。

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

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

    【讨论】:

    • 我知道这种可能性,但您能否更具体地说明我如何在该脚本中使用后期绑定程序集并提供简短的脚本示例?您所说的可扩展性是什么意思?
    • 对于简单的插入,您可以使用 VBScript 或 JScript 的功能,而无需使用 .Net。如果您想打扰您需要研究创建 COM 可见程序集以及如何在 VBScript (CreateObject) 或 JScript (new ActiveXObject) 中使用 COM 对象
    • 我建议寻找与 hMailServer (afaik) 不同的产品,它维护自己的包含完整消息的数据库。
    • 我不知道像 hMailServer 这样支持 C# api 的足够成熟的电子邮件客户端,所以我想我必须尝试一下。并且还具有已经实现但没有 signalR 通知的基本功能。我肯定会尝试 VBScript,即使我没有这方面的经验并且可能无法调试脚本。
    【解决方案2】:

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

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

    要通过运行时绑定使用它,您只需调用任何 hMailServer COM API 对象 使用 VB 脚本。如果您想通过 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 但不是更早版本,也不是更高版本。

    【讨论】:

      猜你喜欢
      • 2018-03-17
      • 2021-06-27
      • 2018-08-07
      • 2020-10-04
      • 1970-01-01
      • 1970-01-01
      • 2016-02-28
      • 2011-01-30
      • 1970-01-01
      相关资源
      最近更新 更多