如何创建基于PHP的电子邮件系统?

时间:2015-11-27 14:44:24

标签: php email lamp

目前我正在使用cPanel管理邮箱。我在cPanel中配置了邮箱,以便将电子邮件传递给PHP脚本。我只是为了这个目的使用cPanel,所以我想摆脱所有的装备。

我所需要的只是:

  • 创建一个电子邮件服务器(从这里我想我需要一些PHP库/应用程序)
  • 在电子邮件服务器中创建电子邮件帐户/邮箱
  • 对于邮箱收到的每封电子邮件:运行处理字节的PHP脚本

These PHP extensions依赖于预先存在的电子邮件服务器和帐户,因此,仅凭这些还不够。

从我一直在研究的,显然我需要通过PHP命令行,使用CLI或CGI来完成它,不确定是哪一个。

我在使用LAMP CentOS的VPS中工作,也许有一个开源的PHP应用程序或库可以在这里实现,只是为了特定的任务。

2 个答案:

答案 0 :(得分:4)

很抱歉这么说,但你打算做什么根本没有任何意义。

理由:

为了能够接收和访问电子邮件,您必须实现至少一个完全成熟的网络服务器:要接收的SMTP服务器以及用于访问邮箱的其他服务器,如IMAP4服务器或类似服务器。加上ssl或tls加密,身份验证以及和......的所有开销。

  • PHP不是一种非常适合这种项目的语言。
  • 这样的计划工作量目前可能被你低估了。如果你看看现有的实现,你会发现它们都是非常庞大和复杂的软件包。我说如果不是几年,那么实施这么多东西将需要一个非常好的程序员几个月。

请不要弄错,但我的印象是你还没有完全理解电子邮件交换的实际工作方式以及需要做什么。

相反,我建议您通过掌握一些可以使用的独立系统来处理这个领域,也许是您租用的虚拟专用服务器,包括域名和静态IP地址。请注意,某些带有php的网站空间足够。然后安装典型的软件包,一些Linux操作系统,可能是Postfix SMTP服务器,Dovecot IMAP服务器以及它们所需的一切。然后你配置那些东西,如果你真的成功并且能够通过该设置实际接收消息,那么就是回到这个问题的时候了。我期待两件事:

  1. 你将通过该实验学到很多东西
  2. 你会同意你目前的计划没有意义。

答案 1 :(得分:3)

为了阅读邮箱中的电子邮件,我建议使用IMAP。 这里的电子邮件存储在服务器上,IMAP协议允许您访问服务器上的电子邮件。

您必须在服务器上启用IMAP并使用imap_open函数[1]

这是从php.net采取的一个例子:

<?php
$mbox = imap_open("{imap.example.org:143}", "username", "password");

echo "<h1>Mailboxes</h1>\n";
$folders = imap_listmailbox($mbox, "{imap.example.org:143}", "*");

if ($folders == false) {
    echo "Call failed<br />\n";
} else {
    foreach ($folders as $val) {
        echo $val . "<br />\n";
    }
}

echo "<h1>Headers in INBOX</h1>\n";
$headers = imap_headers($mbox);

if ($headers == false) {
    echo "Call failed<br />\n";
} else {
    foreach ($headers as $val) {
        echo $val . "<br />\n";
    }
}

imap_close($mbox);
?>

在创建新帐户方面,如果您在邮件服务器上创建了一个用于创建帐户的HTML输入表单,那么使用PHP cURL提交POST变量来创建一个新帐户,这是一个很好的stackoverflow答案。这里的主题[2]。

当您在注册表单上提交信息时,您实际上是在提交一系列POST变量。如果您不熟悉cURL或HTTP请求的基础知识,可能需要阅读。

这可能涉及使用cURL登录您为邮件服务器设置的管理框架的管理面板。如果您是相关邮件服务器上的root用户,那么可以使用更好的解决方案。

[1] http://php.net/manual/en/function.imap-open.php

[2] Passing $_POST values with cURL