我有一个在 Windows IIS 上运行的 Web 应用程序。这个应用程序有一个数据库,其中每个项目都有一个唯一的键(1、2、3 ...)和一个电子邮件地址列表(以及其他内容)。
我希望用户使用标识该项目的电子邮件地址向服务器发送电子邮件,然后让服务器将消息转发到该项目的电子邮件地址。例如,如果用户向以下地址发送电子邮件:
item-75@myserver.example.com
然后服务器将接收电子邮件并将其通过管道传输到脚本。该脚本将在数据库中查询第 75 项以获取电子邮件地址列表,然后重新发送电子邮件。
我可以在 unix 系统上使用 sendmail 轻松完成此操作,但我不知道是否可以在 Windows 系统上完成类似的设置(或者是否需要额外的软件)。
最佳答案
(这听起来像是您想实现像 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 header ,用于识别发送电子邮件的电子邮件地址,以及一个 X-Receiver header ,用于每个要接受电子邮件的收件人。这是修改后的电子邮件示例:
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 header 中列出的每个电子邮件地址。
4) 将此脚本作为计划任务运行。另一种选择是将其构建为 Windows 服务,或实现类似 filesystemwatcher 的东西,它会在每次将电子邮件创建为文件时执行。
5) 所有这一切的另一种选择是实际实现 SMTP 事件接收器,但我认为这对于您想要做的事情来说太过分了,并且会产生比它解决的更多的麻烦。如果我喜欢痛苦,我只会走事件接收器路线。
希望我没有说得那么清楚。
关于windows - 将传入电子邮件通过管道传输到 Windows IIS SMTP 上的脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/926345/
我需要在客户计算机上运行Ruby应用程序。通常需要几天才能完成(复制大备份文件)。问题是如果启用sleep,它会中断应用程序。否则,计算机将持续运行数周,直到我下次访问为止。有什么方法可以防止执行期间休眠并让Windows在执行后休眠吗?欢迎任何疯狂的想法;-) 最佳答案 Here建议使用SetThreadExecutionStateWinAPI函数,使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入休眠状态或关闭显示。像这样的东西:require'Win32API'ES_AWAYMODE_REQUIRED=0x0
尝试通过RVM将RubyGems升级到版本1.8.10并出现此错误:$rvmrubygemslatestRemovingoldRubygemsfiles...Installingrubygems-1.8.10forruby-1.9.2-p180...ERROR:Errorrunning'GEM_PATH="/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/ruby-1.9.2-p180@global:/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/rub
我正在使用puppet为ruby程序提供一组常量。我需要提供一组主机名,我的程序将对其进行迭代。在我之前使用的bash脚本中,我只是将它作为一个puppet变量hosts=>"host1,host2"我将其提供给bash脚本作为HOSTS=显然这对ruby不太适用——我需要它的格式hosts=["host1","host2"]自从phosts和putsmy_array.inspect提供输出["host1","host2"]我希望使用其中之一。不幸的是,我终其一生都无法弄清楚如何让它发挥作用。我尝试了以下各项:我发现某处他们指出我需要在函数调用前放置“function_”……这
我正在编写一个gem,我必须在其中fork两个启动两个webrick服务器的进程。我想通过基类的类方法启动这个服务器,因为应该只有这两个服务器在运行,而不是多个。在运行时,我想调用这两个服务器上的一些方法来更改变量。我的问题是,我无法通过基类的类方法访问fork的实例变量。此外,我不能在我的基类中使用线程,因为在幕后我正在使用另一个不是线程安全的库。所以我必须将每个服务器派生到它自己的进程。我用类变量试过了,比如@@server。但是当我试图通过基类访问这个变量时,它是nil。我读到在Ruby中不可能在分支之间共享类变量,对吗?那么,还有其他解决办法吗?我考虑过使用单例,但我不确定这是
我的最终目标是安装当前版本的RubyonRails。我在OSXMountainLion上运行。到目前为止,这是我的过程:已安装的RVM$\curl-Lhttps://get.rvm.io|bash-sstable检查已知(我假设已批准)安装$rvmlistknown我看到当前的稳定版本可用[ruby-]2.0.0[-p247]输入命令安装$rvminstall2.0.0-p247注意:我也试过这些安装命令$rvminstallruby-2.0.0-p247$rvminstallruby=2.0.0-p247我很快就无处可去了。结果:$rvminstall2.0.0-p247Search
我在理解Enumerator.new方法的工作原理时遇到了一些困难。假设文档中的示例:fib=Enumerator.newdo|y|a=b=1loopdoy[1,1,2,3,5,8,13,21,34,55]循环中断条件在哪里,它如何知道循环应该迭代多少次(因为它没有任何明确的中断条件并且看起来像无限循环)? 最佳答案 Enumerator使用Fibers在内部。您的示例等效于:require'fiber'fiber=Fiber.newdoa=b=1loopdoFiber.yieldaa,b=b,a+bendend10.times.m
我想设置一个默认日期,例如实际日期,我该如何设置?还有如何在组合框中设置默认值顺便问一下,date_field_tag和date_field之间有什么区别? 最佳答案 试试这个:将默认日期作为第二个参数传递。youcorrectlysetthedefaultvalueofcomboboxasshowninyourquestion. 关于ruby-on-rails-date_field_tag,如何设置默认日期?[rails上的ruby],我们在StackOverflow上找到一个类似的问
我将我的Rails应用程序部署到OpenShift,它运行良好,但我无法在生产服务器上运行“Rails控制台”。它给了我这个错误。我该如何解决这个问题?我尝试更新rubygems,但它也给出了权限被拒绝的错误,我也无法做到。railsc错误:Warning:You'reusingRubygems1.8.24withSpring.UpgradetoatleastRubygems2.1.0andrun`gempristine--all`forbetterstartupperformance./opt/rh/ruby193/root/usr/share/rubygems/rubygems
我正在尝试从Postgresql表(table1)中获取数据,该表由另一个相关表(property)的字段(table2)过滤。在纯SQL中,我会这样编写查询:SELECT*FROMtable1JOINtable2USING(table2_id)WHEREtable2.propertyLIKE'query%'这工作正常:scope:my_scope,->(query){includes(:table2).where("table2.property":query)}但我真正需要的是使用LIKE运算符进行过滤,而不是严格相等。然而,这是行不通的:scope:my_scope,->(que
几个月前,我读了一篇关于rubygem的博客文章,它可以通过阅读代码本身来确定编程语言。对于我的生活,我不记得博客或gem的名称。谷歌搜索“ruby编程语言猜测”及其变体也无济于事。有人碰巧知道相关gem的名称吗? 最佳答案 是这个吗:http://github.com/chrislo/sourceclassifier/tree/master 关于ruby-寻找通过阅读代码确定编程语言的rubygem?,我们在StackOverflow上找到一个类似的问题: