我目前需要设置一个带有额外扭曲的外发SMTP服务器。如果用户发送电子邮件并且此服务器收到邮件,则应验证邮件发送到SQL数据库的电子邮件地址。
即:我有一个包含电子邮件地址的表和ACTIVE / INACTIVE的状态列。用户发送电子邮件并将其发送到SMTP服务器。当SMTP服务器收到电子邮件时,服务器应该获取已发送邮件的电子邮件地址,并根据数据库对其进行验证,以检查电子邮件地址的相应状态。如果该状态是活动的,则该消息应该转发到地址。如果没有,则应向该电子邮件地址发送回复消息,指出该电子邮件处于非活动状态。
我的问题是这样的。是否最好在C#中编写我自己的SMTP服务器应用程序,或者是否有一些现成的解决方案,如IIS,我可以设置一些如何获得此功能?
在C#中重新编写我自己的电子邮件服务器应用程序似乎是一个肮脏的解决方案和轮子的娱乐?
我在可以接受脚本的IIS SMTP服务器上阅读了有关OnArrival功能的内容。有什么想法?
答案 0 :(得分:1)
我认为这会对你有所帮助:
Pipe incoming email to a script on Windows IIS SMTP?
部分答案:
IIS SMTP服务可以发送电子邮件,还可以接受电子邮件。
这是你想要做的。
配置您的IIS SMTP服务以接受域的电子邮件(您可以 在IIS SMTP服务的属性中配置它 域)。说域名“myserver.example.com”
然后,在DNS服务器中,配置指向的MX记录 “myserver.example.com”。
现在,当电子邮件发送到您的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来自:“jim bob” 收件人:主题:测试MIME版本:1.0 内容类型:text / plain;消息ID: < 024f01c9e130 $ $ b3eca500 @ 0401a8c0本地>
test一旦你有这个修改过的内容,你就会想把它写进去 mailroot / pickup目录中的文件。请务必使用唯一的名称。
IIS SMTP服务将来,接收电子邮件并将其转发, 使用X-Sender作为MAIL FROM地址发送电子邮件,以及 将其发送到每个X-Receiver标头中列出的每个电子邮件地址。
4)将此脚本作为计划任务运行。另一种选择是建立它 作为一个Windows服务,或实现类似的东西 filesystemwatcher,每次创建电子邮件时执行 一个文件。
5)所有这一切的另一个选择是实际实现SMTP事件 沉没,但我认为这对你想做的事情来说太过分了,而且可以 制造更多头痛,而不是解决。我只会去事件接收器 如果我喜欢痛苦的路线。