PHP 电子邮件客户端 - 克服缓慢的发送/接收

Posted

技术标签:

【中文标题】PHP 电子邮件客户端 - 克服缓慢的发送/接收【英文标题】:PHP E-Mail Client - Overcoming slow send/receive 【发布时间】:2012-05-16 08:16:11 【问题描述】:

我开发了一个 CRM,用于类似于 manta.com 的营销网站。 CRM 有一个内置的电子邮件客户端。基本上,它将姓名和电子邮件与文件中的地址相匹配,如果电子邮件来自客户,它将在电子邮件旁边加载他们的帐户信息。

整个系统都可以工作,但在某些情况下速度很慢。由于该国的每个“地区”都由不同的公司管理,因此该软件连接到几个不同的邮件服务器,所有这些服务器的行为都不同。

在某些情况下(主要是使用 godaddy 服务器)发送电子邮件需要很长时间。如果他们有很多消息(500+),即使是分页的,加载收件箱也需要很长时间。

我使用pear Mail::Factory smtp 发送,内置php imap 函数接收。

我正在考虑外发消息,我只需将电子邮件存储到数据库中,然后让 cron 脚本将其发送出去,然后他们就可以发送电子邮件并立即继续。

是否有人对通过 IMAP 和 php 处理大型收件箱有任何想法/概念?我将无法控制邮件服务器本身,但可以完全控制 CRM 所在的服务器。

我不是在寻找代码,我只是在寻找概念,如果你有的话。

它是 Linux (ubuntu)、apache、mysql、php。如果需要,我可以使用 Zend。

【问题讨论】:

不能直接使用本地 SMTP 服务器发送邮件吗?此外,500 封电子邮件似乎不是一个很大的收件箱。但是,您每次都必须下载每封电子邮件的标题吗?如果是这样,你真的需要考虑缓存它。 不,我不能使用本地 SMTP。根据发送它的人,它来自的域是不同的。例如,纽约的某个人可能是 bobdole@newyorksales.com,而洛杉矶的某个人可能是 maryjane@californiasales.com 因为不同的域需要从他们的邮件服务器发出,否则我最终会打开另一个罐头具有 SPF 和其他电子邮件验证问题的蠕虫。查看它的简单方法是基于 Web 的 Outlook,他们在其中输入邮件服务器、用户名和密码,并将他们的帐户连接到 CRM。 好吧,从技术上讲,您可以通过插入适当的邮件标头从任何您想要的域发送电子邮件。唯一的限制是,如果该域的 SPF 记录不包含您的服务器的 IP 地址。 抱歉,在我发布评论之前,我没有意识到您编辑了您的评论。另一种选择是从 noreply@yourhost.com 发送邮件并回复 bobdole@newyorksales.com。 Mike 我会研究缓存传入的电子邮件。您是否认为我只是保存标题信息(收件人、发件人、主题、日期)并在他们打开收件箱时加载新的? php 是否有能力在某个日期之后加载电子邮件?我也同意 500 封电子邮件不是一个大收件箱(我的收件箱有 7000 封),但使用 godaddy 时,我会延迟 2-3 分钟才能收到邮件主题。 【参考方案1】:

它看起来像是缓存电子邮件和使用忽略电子邮件正文的 imap_fetch_overview 函数的组合。这似乎消除了滞后的任何问题。我也可以用它来分页结果,所以我一次只加载一个小数字(25-50)。感谢您的帮助。

【讨论】:

以上是关于PHP 电子邮件客户端 - 克服缓慢的发送/接收的主要内容,如果未能解决你的问题,请参考以下文章

AWS SES - 退回的电子邮件

php发送邮件

怎么配置SMTP匿名发送邮件服务器

通过 php 脚本定期发送电子邮件

调整Exchange接收连接器延迟参数解决SMTP代发送邮件问题

手机接收电子邮件如何设置?