在 cpanel 主机上构建 webmail 应用程序:如何绑定实际的电子邮件服务?
Posted
技术标签:
【中文标题】在 cpanel 主机上构建 webmail 应用程序:如何绑定实际的电子邮件服务?【英文标题】:Architechting webmail app on cpanel host: How do I go about tying in the actual email service? 【发布时间】:2017-07-02 01:53:54 【问题描述】:我正在为最终用户构建一个类似于 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 用户列表吗?我的意思是应用程序需要什么信息才能连接到邮件服务器,我会从什么协议中获得这些信息?我认为这是我的障碍。
我想第一件事是在发布期间,它进行身份验证,身份验证之后会发生什么,什么协议,我将根据哪里/什么来做出该决定,以及之后我如何拉入电子邮件列表?我猜这只是一个 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
我相信邮件工具在这里https://www.npmjs.com/package/nodeutil
如果有人能帮我正确看待这个问题,那就太好了。
【问题讨论】:
仍然是in the edit history。也许在将其添加回来时,您可以将意识流样式编辑为更深思熟虑的样式? 或者不要费心去改进它,并添加更多不正确的大小写。当然,在这一点上它是大便,但你仍然可以表现出愿意。 您是否阅读过本网站的内容和内容?编辑是我们,用户,我们试图结束这个问题过于宽泛。你可以在 Programming stack exchange site 上提问,我相信你会得到很好的答案。哦,请在评论中发布问题链接,我自己会对答案感兴趣,这是一个有趣的想法。 对不起,有些事情我认为是理所当然的,因为我多年来一直在使用堆栈。另一方面,你提到它的“有趣”,让我觉得我可能过度假设了这个将是一件常见的事情。对我自己来说,这一直是个谜,因为我从未尝试过,只是意识到我可能在过去 5 年左右完成这样的事情,并且觉得我现在几乎可以做到,但这部分直到我真正面对它,我其实想了解更多。所以谢谢你至少指出我没有问一个明显的问题。我会发布一个反向链接.. 【参考方案1】:对此的一些答案:
自行开发,共享主机上的网络邮件、cPanel API、curl
、fopen
和第 3 方电子邮件应用程序 API 将是起点。
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';
还有一个
关于自己动手的一些其他想法:
这是一篇阐明如何查看帐户的文章,使用 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
【讨论】:
感谢您从我的生活、堆栈社区中吹走了 3 分,让我后悔分享知识。我可以对 OP 投一些反对票,这样我就可以删除它,它几乎是废话。以上是关于在 cpanel 主机上构建 webmail 应用程序:如何绑定实际的电子邮件服务?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 cPanel 上安装 etherpad-lite(共享主机)
如何在 cPanel 共享主机上上传 laravel 项目?