2

有人知道如何发送带有附件的邮件并在 JavaScript (jQuery) 中显示进度条的好例子吗?

4

1 回答 1

0

您可能不得不猜测花费的时间,并据此更新进度条。

鉴于 PHP 没有线程,我建议有一个用于交付的数据库队列,并从主站点(或通过 cron)触发一个外部 PHP 进程,该进程在侧面处理交付,在数据库上标记当前状态每次交付:NOT_PROCESSED、IN_PROGRESS、CONNECTING、CONNECTED、SENDING_DATA、ACCEPTED、FAILURE_X。您可以通过 Ajax 在数据库中查询每次交付的状态。

如果 PHPMailer 在内部使用标准的 PHP mail() 函数,它在您的机器中使用中继 SMTP 服务器,那么您将无法获得关于状态的那么多信息(如果您自己创建了套接字,您将拥有这些信息),您只能拥有三个主要状态NOT_PROCESSED、IN_PROGRESS、FAILURE_X。

是否可以在向用户提供投递反馈的同时使用 PHP 异步发送邮件?

否则,也许您可​​以在每个小步骤之后更新进度条。像这样随意的东西:

  1. 设置邮件收件人
    • 更新进度条 25%
  2. 从地址设置邮件
    • 更新进度条 50%
  3. 设置邮件标题
    • 更新进度条 75%
  4. 发邮件
    • 将进度条更新为 100%

然而,这确实是低效的。最终的结果可能是用户看到进度条在前三个(25%、50%、75%)之间跳跃得非常快,然后被卡在 75% 上以获得额外的第二或第二然后完成..

于 2011-11-11T20:54:08.990 回答