我需要一个系统来记录某些电子邮件,以便它们也可以在线显示。我希望这个尽可能简单,所以想在我开始自己构建之前询问是否有人知道现有的解决方案。如果解决方案尚不存在,我也对可以帮助我构建此工具的任何信息感兴趣。
理想情况下,我只想设置一个电子邮件地址,例如log-me@mydomain.com,它只能用于此目的,因此不需要进行任何复杂的排序/解析要存储什么消息,可以安全地假设应该记录在该电子邮件地址收到的任何消息。将消息添加到数据库后,我将执行admin / moderator功能。我希望能够编写电子邮件,在CC / BCC字段中复制log-me@mydomain.com地址,并让系统在收到电子邮件时记录该电子邮件。我也没有问题安排进程以特定的时间间隔运行,我已经使用了几个这样的脚本。
所以,考虑一下,如果已经没有这种类型的系统,我需要自己构建它,我真正需要的是一种通过pop3将电子邮件发送到mysql数据库的方法,最好保留电子邮件可能包含的任何html格式,其余部分我已经知道该怎么做。
我在线搜索解决方案并没有太多运气,所以任何帮助都会非常感激。
答案 0 :(得分:1)
有几种方法可以做到这一点。基本上,您需要将邮件传递给知道如何将邮件导入数据库的脚本。如果您正在运行自己的邮件服务器,那么procmail
是可行的方法。您可以在procmail
中设置规则,以便将指向某个电子邮件地址的所有邮件通过管道传输到您的脚本。
如果邮件服务器位于其他地方且您具有POP3或IMAP访问权限,则可以安排某些内容定期接收邮件。在这种情况下,一个选择是fetchmail
。 fetchmail
可以连接到POP3服务器并将电子邮件发送到脚本。另一种选择是编写一个使用IMAP/POP3 extension直接执行它的PHP脚本。在任何一种情况下,您都可以安排它与cron一起定期运行。
答案 1 :(得分:0)
所以我最终找到了这封电子邮件到数据库:http://www.phpclasses.org/discuss/package/3324/
它的工作原理与我想要的完全一样,现在我可以使用存储在数据库中的信息来完成我需要的工作。
虽然包中有一个小错误。 'from'地址显示为DB中的'from'和'to'地址。这是需要在类中更改的代码:
1. if(is_array($from)){
2. foreach ($from as $id => $object) {
3. $fromname = $object->personal;
4. $fromaddress = $object->mailbox . "@" . $object->host;
5. }
6. }
7.
8. if(is_array($to)){
9. foreach ($from as $id => $object) {
10. $toaddress = $object->mailbox . "@" . $object->host;
11. }
12. }
我上面代码第9行的$应改为$ to。这将修复错误并在数据库中显示正确的“到”地址。该类位于一个文件中,因此只需搜索:
if(is_array($to)){
找到我在上面发布的代码。