通过管道将传入的电子邮件发送到Windows IIS SMTP上的脚本?

通过管道将传入的电子邮件发送到Windows IIS SMTP上的脚本?,windows,iis,email,smtp,Windows,Iis,Email,Smtp,我有一个在Windows IIS上运行的web应用程序。此应用程序有一个数据库,其中每个项目都有一个唯一的密钥(1、2、3…)和一个电子邮件地址列表(以及其他内容) 我希望用户使用标识该项目的电子邮件地址向服务器发送电子邮件,然后让服务器将消息中继到该项目的电子邮件地址。例如,如果用户向以下地址发送电子邮件: item-75@myserver.example.com 然后服务器将接收电子邮件并将其传输到脚本。该脚本将查询数据库中的第75项以获取电子邮件地址列表,然后重新发送电子邮件 我可以在使

我有一个在Windows IIS上运行的web应用程序。此应用程序有一个数据库,其中每个项目都有一个唯一的密钥(1、2、3…)和一个电子邮件地址列表(以及其他内容)

我希望用户使用标识该项目的电子邮件地址向服务器发送电子邮件,然后让服务器将消息中继到该项目的电子邮件地址。例如,如果用户向以下地址发送电子邮件:

item-75@myserver.example.com
然后服务器将接收电子邮件并将其传输到脚本。该脚本将查询数据库中的第75项以获取电子邮件地址列表,然后重新发送电子邮件


我可以在使用sendmail的unix系统上轻松完成此操作,但我不知道是否可以在Windows系统上完成类似的设置(或者是否需要其他软件)。

您可以使用定时脚本通过POP3或IMAP读取电子邮件。我也是一个UNIXer,所以我很难理解这样的事情是多么的困难,但你已经明白了。这是我认为你应该做的

  • 用你喜欢的语言写一个脚本。只要它可以从POP3或IMAP中读取

  • 让Windows每5分钟运行一次脚本

  • 让脚本访问邮箱,并根据需要处理任何电子邮件

我个人的偏好是安装Python,但如果您受到限制。。。我不知道。ASPNET还不错,但我以前从未将它用于肮脏的脚本编写。

(听起来你想实现craigslist这样的功能)

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

这是你想要做的

将您的IIS 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
X-Sender:me@mywebsite.com
X接收器:recip1@theirdomain.com
X接收器:recip2@theirdomain.com
来自:“吉姆·鲍勃”
致:
主题:测试
MIME版本:1.0
内容类型:文本/纯文本;
消息ID:
测试
一旦修改了此内容,您将希望将其写入mailroot/pickup目录中的文件。请确保使用唯一的名称

IIS SMTP服务将经过,接收电子邮件并转发,使用X-Sender作为邮件发件人地址发送电子邮件,然后将其发送到每个X-Receiver标头中列出的每个电子邮件地址

4) 将此脚本作为计划任务运行。另一种选择是将其构建为windows服务,或者实现类似于filesystemwatcher的功能,每次将电子邮件创建为文件时,它都会执行

5) 另一个选择是实际实现SMTP事件接收器,但我认为这对于您想要做的事情来说是过分的,并且可能会造成比它解决的问题更多的麻烦。如果我喜欢疼痛,我只会选择活动下沉路线


希望我没有说得那么清楚。

事件接收器一点也不难!事实上,有十几个用VBS编写的示例(在使用WSH的Win服务器上运行),它们完全实现了您想要做的事情。OnArrival事件接收器使用您希望的任何计算机用户帐户实时运行,不存在任何安全风险,因为消息是异步的,不会返回报告

这实际上是一件非常容易的事情——最简单的事情之一。一旦设置,它也不会中断。在一台服务器上,我已经有一台运行了9年多的服务器每天处理几千条传入消息!我已经做了十几件这样的事情——如果你花了几个小时以上,那你就大错特错了。如果在UNIX上比这更容易的话,我的祖母可能是一名UNIX程序员,所以我不会夸耀在UNIX服务器上做这件事更容易


谢谢-这是我正在调查的一个选择。但是,我还需要知道是否可以按需创建多个地址,如“item-1”、“item-2”。例如,是否可以将所有收到的电子邮件放入一个文件中?这似乎是一个非常不可靠的解决方案,更不用说速度慢了!谢谢尼克-如果你有任何链接或其他指针,我将不胜感激。我认为这是最好的选择,因为它在到达时被直接处理!另外,你知道我在哪里可以找到一个工作的例子,我仍然有一个旧的服务器。我找不到有关如何加载/运行接收器以使其注册的任何信息。也不清楚:s,我更喜欢下面的接收器选项,因为它直接在服务器接收时处理电子邮件,我假设涉及exchange server。我不知道如何执行第一步。我贴了一个问题。也许你能帮忙?