目前我正在构建一个系统(自定义CMS),其要求是捕获公众发送到注册电子邮件地址的所有电子邮件,并通过系统通过注册的电子邮件回复电子邮件地址。
例如:
BUT
我不知道这个叫做的术语。我可以知道如何实施它?请咨询一些链接或关键字。我知道很多知识库解决方案,CRM,通过CNAME集成的项目管理软件,更改DNS这些东西,但我不知道如何。感谢。
更新
示例类似于http://www.cloudmailin.com 但我想要的是从我的应用程序生成并接收来自公众的电子邮件给我的客户。
答案 0 :(得分:1)
实现此目的有两种主要方法
从邮箱中提取电子邮件
在此方法中,电子邮件会转到邮箱,您会定期检查此邮箱中的内容以处理电子邮件。虽然这通常会导致延迟,但您可以通过定期运行程序并让它一直轮询邮箱来减少这种情况。
将邮件处理重定向到程序
如果您的邮件服务器位于unix上,您可以将电子邮件处理重定向到可以根据需要处理电子邮件的脚本
具体而言,最简单的方法是找到支持procmail脚本的Web主机。这些配置脚本允许您将电子邮件重定向到PHP程序,您可以将其作为域的所有电子邮件的捕获。见example answer
答案 1 :(得分:1)
我已经使用cloudmailin完成了此操作 - 您只需要将所有公共地址的邮件转发设置为您的cloudmailin地址。所以:
用户通过电子邮件随机散列地址,例如: info+dfj28d@example.com
example.com上的邮件服务器将info
的所有邮件转发至youraccount@cloudmailin.com
。
Cloudmailin会在http://example.com/yourwebhook.php
向您的网站发布电子邮件。
即使所有邮件都通过单个cloudmailin地址进行过滤,cloudmailin也会在其发布的字段中包含原始哈希地址,因此您的网站可以提取哈希并确定哪个用户正在回复。伪PHP给你一个想法:
<?php /* webhooks.php */
$address = $_POST['to']; // 'info+dfj28d@example.com'
$addressParts = explode('@', $address); // array('info+dfj28d', 'example.com')
$userParts = explode('+', $addressParts[0]); // array('info', 'dfj28d');
$hash = $userParts[0]; // 'dfj28d'
?>
在这个例子中,我使用像info+dfj28d
这样的哈希,因为我们的邮件域是在gmail上托管的,所以gmail的username+alias
语法是将所有随机哈希发送到同一邮箱的简单方法。其他邮件主机具有类似的创建通配符别名的方法。
关键是你需要一个随机组件(dfj28d
)和一个静态组件(info
),因此你的邮件服务器可以区分散列地址(任何包含{ {1}})和普通邮件帐户(info
)。
答案 2 :(得分:1)
我们使用Google Apps进行类似设置。 http://www.google.com/apps/
我们创建了一个“app @”帐户,可以将所有邮件作为一个邮件接收。该应用程序会为您的电子邮件生成自己的电子邮件地址。该应用程序被编写(php)以通过IMAP读取传入的电子邮件。
[我建议使用专门为您的应用设置的单独域名,将邮件服务器和责任分开,并允许客户端在不破坏应用程序的情况下更改/升级/重新配置邮件服务器。 ]
您可以将“真实”用户添加到Apps后端,这意味着如果邮件被意外发送,您可以转发“else @”。
增加的好处包括:
涉及的步骤:
我可以详细说明一下IMAP代码,但这个想法应该是明确的。
(我们也将Mandrill用于另一个项目 - 他们的API看起来也是一个很好的方式)
答案 3 :(得分:0)
感谢大家回答我的问题!经过几天的研究,最后我得到了一些线索。以下是该问题的汇编答案。
首先,对系统实施fMailbox。 [感谢@Nytram,请回答我的问题,给你50个声誉。这个链接意味着很多!]实现它的邮件接收功能。这种方法无需触摸电子邮件服务器,无需触摸系统环境本身,可以用纯PHP完成!它不是框架,所以它可以自由地提取功能的一部分。对于这种情况,这是有史以来最好的工具(如果你知道更好的东西,请提出建议!谢谢)
第二,实施[@Ramon de la Fuente]的概念。 (感谢@Ramon de la Fuente,谷歌应用程序很好,但它成了历史:P它很好,当时它仍然是免费的,而现在很难说服所有客户使用谷歌应用程序。他们可能在网站上安装了自己的交换服务器,谁知道:))
第三,实施[@Nick]的代码。 (感谢@Nick,由于隐私和机密问题。客户电子邮件对自己也很重要,我们必须尽量减少第三方插件的使用。虽然我喜欢cloudmailin的想法)
用于发送,因为系统定义为捕获所有。只需预定义字段回复,FMailbox也会捕获它;)
非常感谢所有资源!!