1

我目前需要设置一个带有额外扭曲的传出 SMTP 服务器。如果用户发送电子邮件并且此服务器接收到邮件,那么它应该验证将邮件发送到 SQL 数据库的电子邮件地址。

即:我有一个包含电子邮件地址的表格和一个活动/非活动状态列。用户发送电子邮件并将其发送到 SMTP 服务器。当 SMTP 服务器收到电子邮件时,服务器应获取发送邮件的电子邮件地址,并根据数据库对其进行验证,以检查电子邮件地址的相应状态。如果该状态处于活动状态,则消息应中继到收件人地址。如果不是,则应向该电子邮件地址发送回复消息,说明该电子邮件处于非活动状态。

我的问题是这样的。最好用 C# 编写我自己的 SMTP 服务器应用程序来执行此操作,还是有一种开箱即用的解决方案,例如 IIS,我可以设置一些如何获得此功能?

用 C# 重写我自己的电子邮件服务器应用程序似乎是一个肮脏的解决方案和轮子的娱乐?

我在可以接受脚本的 IIS SMTP 服务器上阅读了有关 OnArrival 功能的内容。对此有什么想法吗?

4

1 回答 1

1

我认为这将帮助您:将
传入的电子邮件通过管道传输到 Windows IIS SMTP 上的脚本?

部分答案:

IIS SMTP 服务可以发送电子邮件,也可以接受电子邮件。

这就是你想要做的。

将 IIS SMTP 服务配置为接受域的电子邮件(您可以在 IIS SMTP 服务的属性中的域下进行配置)。说域名“myserver.example.com”

然后,在您的 DNS 服务器中,配置指向“myserver.example.com”的 MX 记录。

现在,当电子邮件被发送到您的 IIS SMTP 服务器时,它实际上会被放置在您的 mailroot/drop 文件夹中(您也可以在 IIS SMTP 服务属性中更改此文件夹)。

现在您正在接受电子邮件,下一步是编写一个脚本,它将:

1)解析电子邮件。

2)相应地修改它们(你只是想改变“到”地址吗?)。

这是诀窍,因此您需要解析传入的电子邮件并仅转发那些验证电子邮件的邮件.. 以及未通过验证的邮件,从电子邮件中读取“FROM”地址并回复他!

3)如果您想重新发送电子邮件,那么您需要相应地修改它们。您将需要添加一个 X-Sender 标头,用于标识发送电子邮件的电子邮件地址,以及一个 X-Receiver 标头,用于每个将接受电子邮件的收件人。以下是修改后的示例电子邮件:

X-Sender: me@mywebsite.com X-Receiver: recip1@theirdomain.com X-Receiver: recip2@theirdomain.com From: "jim bob" To: Subject: test MIME-Version: 1.0 Content-Type: text/plain ; 消息 ID:<024f01c9e130$b3eca500$0401a8c0@local>

测试 一旦你有了这个修改过的内容,你就会想把它写到 mailroot/pickup 目录中的一个文件中。请务必使用唯一的名称。

IIS SMTP 服务会过来,提取电子邮件并转发它,使用 X-Sender 作为 MAIL FROM 地址发送电子邮件,并将其发送到每个 X-Receiver 标头中列出的每个电子邮件地址。

4)将此脚本作为计划任务运行。另一种选择是将其构建为 Windows 服务,或者实现类似文件系统观察器的功能,每次将电子邮件创建为文件时都会在其中执行。

5)所有这一切的另一种选择是实际实现一个 SMTP 事件接收器,但我认为这对于你想要做的事情来说太过分了,并且会产生更多的头痛,而不是它解决的问题。如果我喜欢痛苦,我只会走事件汇路线。

于 2012-12-02T06:41:16.643 回答