- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个在 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/
我正在使用 Assets 管道来管理我的 Grails 3.0 应用程序的前端资源。但是,似乎没有创建 CoffeeScript 文件的源映射。有什么办法可以启用它吗? 我的 build.gradle
我有一个我想要的管道: 提供一些资源, 运行一些测试, 拆资源。 我希望第 3 步中的拆卸任务运行 不管 测试是否通过或失败,在第 2 步。据我所知 runAfter如果前一个任务成功,则只运行一个任
如果我运行以下命令: Measure-Command -Expression {gci -Path C:\ -Recurse -ea SilentlyContinue | where Extensio
我知道管道是一个特殊字符,我需要使用: Scanner input = new Scanner(System.in); String line = input.next
我再次遇到同样的问题,我有我的默认处理方式,但它一直困扰着我。 有没有更好的办法? 所以基本上我有一个运行的管道,在管道内做一些事情,并想从管道内返回一个键/值对。 我希望整个管道返回一个类型为 ps
我有三个环境:dev、hml 和 qa。 在我的管道中,根据分支,阶段有一个条件来检查它是否会运行: - stage: Project_Deploy_DEV condition: eq(varia
我有 Jenkins Jenkins ver. 2.82 正在运行并想在创建新作业时使用 Pipeline 功能。但我没有看到这个列为选项。我只能在自由式项目、maven 项目、外部项目和多配置之间进
在对上一个问题 (haskell-data-hashset-from-unordered-container-performance-for-large-sets) 进行一些观察时,我偶然发现了一个奇
我正在寻找有关如何使用管道将标准输出作为其他命令的参数传递的见解。 例如,考虑这种情况: ls | grep Hello grep 的结构遵循以下模式:grep SearchTerm PathOfFi
有没有办法不因声明性管道步骤而失败,而是显示警告?目前我正在通过添加 || exit 0 来规避它到 sh 命令行的末尾,所以它总是可以正常退出。 当前示例: sh 'vendor/bin/phpcs
我们正在从旧的 Jenkins 设置迁移到所有计划都是声明性 jenkinsfile 管道的新服务器……但是,通过使用管道,我们无法再手动清除工作区。我如何设置 Jenkins 以允许 手动点播清理工
我在 Python 中阅读了有关 Pipelines 和 GridSearchCV 的以下示例: http://www.davidsbatista.net/blog/2017/04/01/docume
我有一个这样的管道脚本: node('linux'){ stage('Setup'){ echo "Build Stage" } stage('Build'){ echo
我正在使用 bitbucket 管道进行培训 这是我的 bitbucket-pipelines.yml: image: php:7.2.9 pipelines: default:
我正在编写一个程序,其中输入文件被拆分为多个文件(Shamir 的 secret 共享方案)。 这是我想象的管道: 来源:使用 Conduit.Binary.sourceFile 从输入中读取 导管:
我创建了一个管道,它有一个应该只在开发分支上执行的阶段。该阶段还需要用户输入。即使我在不同的分支上,为什么它会卡在这些步骤的用户输入上?当我提供输入时,它们会被正确跳过。 stage('Deplo
我正在尝试学习管道功能(%>%)。 当试图从这行代码转换到另一行时,它不起作用。 ---- R代码--原版----- set.seed(1014) replicate(6,sample(1:8))
在 Jenkins Pipeline 中,如何将工件从以前的构建复制到当前构建? 即使之前的构建失败,我也想这样做。 最佳答案 Stuart Rowe 还在 Pipeline Authoring Si
我正在尝试使用 执行已定义的作业构建 使用 Jenkins 管道的方法。 这是一个简单的例子: build('jenkins-test-project-build', param1 : 'some-
当我使用 where 过滤器通过管道命令排除对象时,它没有给我正确的输出。 PS C:\Users\Administrator> $proall = Get-ADComputer -filter *
我是一名优秀的程序员,十分优秀!