我在Windows IIS上运行了一个Web应用程序。这个应用程序有一个数据库,每个项目都有一个唯一的密钥(1,2,3 ......),以及一个电子邮件地址列表(以及其他内容)。
我希望用户使用标识该项目的电子邮件地址向服务器发送电子邮件,然后让服务器将邮件中继到该项目的电子邮件地址。例如,如果用户向以下地址发送电子邮件:
item-75@myserver.example.com
然后服务器将收到电子邮件并将其传递给脚本。该脚本将在数据库中查询项目75以获取电子邮件地址列表,然后重新发送电子邮件。
我可以在使用sendmail的unix系统上轻松完成此操作,但我不知道是否可以在Windows系统上完成类似的设置(或者是否需要其他软件)。
答案 0 :(得分:8)
(听起来你想要实现像craigslist这样的功能)。
IIS SMTP服务可以发送电子邮件,还可以接受电子邮件。
这是你想要做的。
配置IIS SMTP服务以接受域的电子邮件(您可以在域SMTP下的IIS SMTP服务的属性中进行配置)。说域名“myserver.example.com”
然后,在DNS服务器中,配置指向“myserver.example.com”的MX记录。
现在,当电子邮件发送到您的IIS SMTP服务器时,它实际上会被放置在您的mailroot / drop文件夹中(您也可以在IIS SMTP服务属性中更改此文件夹)。
现在您正在接受电子邮件,下一步是编写一个脚本:
1)解析电子邮件。
2)相应地修改它们(你只想更改“到”地址吗?)。
3)如果要重新发送电子邮件,则需要相应地修改它们。 您需要添加一个X-Sender标头,用于标识发送电子邮件的电子邮件地址,以及一个X-Receiver标头,用于接收该电子邮件的每个收件人。以下是修改后的示例电子邮件:
X-Sender: me@mywebsite.com
X-Receiver: recip1@theirdomain.com
X-Receiver: recip2@theirdomain.com
From: "jim bob" <jim@example.com>
To: <item-75@myserver.example.com>
Subject: test
MIME-Version: 1.0
Content-Type: text/plain;
Message-ID: <024f01c9e130$b3eca500$0401a8c0@local>
test
修改后的内容后,您需要将其写入mailroot / pickup目录中的文件。请务必使用唯一的名称。
IIS SMTP服务将通过,接收电子邮件并将其中继,使用X-Sender作为MAIL FROM地址发送电子邮件,并将其发送到每个X-Receiver标头中列出的每个电子邮件地址。 / p>
4)将此脚本作为计划任务运行。另一种选择是将其构建为Windows服务,或实现类似filesystemwatcher的功能,每次将电子邮件创建为文件时都会执行该操作。
5)所有这一切的另一个选择是实际实现一个SMTP事件接收器,但我认为这对你想要做的事情来说太过分了,并且可能会产生比它解决的更多麻烦。如果我喜欢疼痛,我只会去事件接收路线。
希望我没有像泥一样清楚。
答案 1 :(得分:2)
事件沉没并不困难!事实上,大约有十几个用VBS编写的例子(使用WSH在Win服务器上运行),它完全可以完成你想要做的事情。 OnArrival事件接收器使用您希望没有任何安全风险的任何计算机用户帐户实时运行,因为该消息是异步的并且不会报告回来。
这实际上是一件非常容易的事情 - 最简单的事情之一。一旦设置,它永远不会中断。在一台服务器上,我有一台运行超过9年,每天处理几千条传入消息!我已经设置了大约十几个这样的东西 - 如果它花了你几个小时,你做错了。如果在UNIX上比这更容易,我的祖母可能是一名UNIX程序员,所以我不敢吹嘘这在UNIX服务器上更容易做到。
http://msdn.microsoft.com/en-us/library/ms528023.aspx
http://support.microsoft.com/kb/894286
答案 2 :(得分:0)
您可以使用定时脚本通过POP3或IMAP阅读电子邮件。我也是一名UNIXer,所以我很难理解这样的事情是如此困难,但你有它。这是我认为你应该做的事情。
用您喜欢的任何语言制作脚本。只要它可以从POP3或IMAP中读取。
让Windows每5分钟运行一次脚本
让脚本访问邮箱并操作所需的任何电子邮件。
我个人的偏好是安装Python,但如果你有限......我不知道。 ASPNET也不错,但我以前从未将它用于脏脚本。