我正在为最终用户构建类似于Gmail的 Webmail SPA 。此应用程序将托管在cPanel共享主机(LAMP堆栈)上。 最终用户没有cpanel电子邮件访问。我的应用程序将成为这些电子邮件帐户的访问门户。
如果重要,我最好是具有LAMP经验的节点开发人员,所以我愿意接受任何广泛的建议。请注意,通常我只是使用smtp弹出一些东西。我会直接做这个Imap吗?我只想在架构层面上了解我需要访问哪些服务,或者寻找可能是某个示例方向的一点。
也许能够描述我如何实现它的线框,流程图或句子就足够了。我可以找到技术,我只需要一个路线图。
这是RHEL6
$ uname -a
Linux 2.6.32-604.30.3.lve1.3.63.el6.x86_64 #1 SMP Sun Sep 27 06:34:10 EDT 2015 x86_64 x86_64 x86_64 GNU/Linux
有些问题基于我能够思考这个问题的唯一方法:
什么协议通常访问电子邮件(用户?)我会得到一些东西,可能是系统环境变量的内部邮件命令访问,还是PATH?我会ping一个用户列表,我的意思是应用程序需要连接到邮件服务器的哪些信息,以及我从中得到什么协议?我认为这是我的故障。
我想第一件事,就是在帖子期间,它认证,auth之后会发生什么,什么协议,我将在哪里/我将要做出什么决定,以及如何在之后拉入电子邮件列表?我猜这只是一个IMAP请求。这就是我需要的吗?例如php mail()
或nodemailer
?
此外,我似乎无法提出适当的术语来获得任何有意义的谷歌搜索结果,我愿意接受搜索查询帮助,不知道我还在寻找什么技术。
修改
在一些研究中,我发现了以下内容;
一些最终会产生一些结果的搜索词
webmail interfacing php
(或节点) webmail single page application node
(或php) 看起来这可能是节点应用连接到imap的方式的一个示例
https://github.com/cozy-labs/emails/blob/master/server/imap/pool.coffee
我相信mail util在这里https://www.npmjs.com/package/nodeutil
如果有人可以帮助我提出这个问题,那就太棒了。
答案 0 :(得分:-1)
关于此的一些答案:
要滚动您自己的,共享主机上的网络邮件,cPanel API,curl
,fopen
和第三方电子邮件应用程序apis将成为起点。
cPanel
可能不完全支持这一点,但是他们确实有api,UAPI
最有可能出现在某些基本情景中。 https://documentation.cpanel.net/display/SDK/UAPI+Functions+-+Email%3A%3Alist_pops
但是,Afterligic的WebMail Lite
包含一个看起来很有前景的解决方案,其中包含PHP
,REST
和JavaScript
API
。 http://www.afterlogic.org/docs/webmail-lite/integration-and-development
阅读邮件的PHP
示例看起来可能就是这里的
<?php
include_once __DIR__.'/../libraries/afterlogic/api.php';
if (class_exists('CApi') && CApi::IsValid())
{
// data for logging into account
$sEmail = 'user@domain.com';
$sPassword = 'PassWord';
$sFolder = 'INBOX';
$iOffset = 0;
$iLimit = 5;
$oCollection = null;
try
{
$oApiIntegratorManager = CApi::Manager('integrator');
$oAccount = $oApiIntegratorManager->LoginToAccount($sEmail, $sPassword);
if ($oAccount)
{
$oApiMailManager = CApi::Manager('mail');
$oCollection = $oApiMailManager->getMessageList($oAccount, $sFolder, $iOffset, $iLimit);
if ($oCollection)
{
echo '<b>'.$oAccount->Email.':</b><br />';
echo '<pre>';
echo 'Folder: '.$sFolder."\n";
echo 'Count: '.$oCollection->MessageCount."\n"; // $oCollection->MessageResultCount
echo 'Unread: '.$oCollection->MessageUnseenCount."\n";
echo 'List: '."\n";
$oCollection->ForeachList(function ($oMessage) {
$oFrom = $oMessage->From();
echo "\t".htmlentities($oMessage->Uid().') '.$oMessage->Subject().($oFrom ? ' ('.$oFrom->ToString().')' : ''))."\n";
});
echo '</pre>';
}
else
{
echo $oApiMailManager->GetLastErrorMessage();
}
}
else
{
echo $oApiIntegratorManager->GetLastErrorMessage();
}
}
catch (Exception $oException)
{
echo $oException->getMessage();
}
}
else
{
echo 'AfterLogic API isn\'t available';
}
并且a
关于滚动自己的一些其他想法:
下面是一篇文章,阐述了如何查看帐户,使用php
How to create an Email Account in Cpanel via PHP?
一个要列出 How to access list of email accounts with cPanel API?
构建cpanel类是为了提供一种创建和转发的方法,并且可能是解决方案开始时的最佳示例。 http://sajjadhossain.com/tag/cpanel-class/资源来自此处,对此主题进行了大量测试http://www.zubrag.com/scripts/cpanel-create-email-account.php
转发电子邮件,以防有时使用其他临时帐户 https://www.a2hosting.com/kb/cpanel/cpanel-mail-features/forwarding-incoming-e-mail-messages-to-a-script-file
然后可以选择鼠标邮件或cpanel支持的其他两个邮件应用程序:可能将其中一个转为门户网站。这是一种授权松鼠邮件的方法,例如: http://squirrelmail.org/plugins_category.php?category_id=6