通过PhpMailer异步发送电子邮件

前端之家收集整理的这篇文章主要介绍了通过PhpMailer异步发送电子邮件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用 PHPMailer发送效果很好的电子邮件.但问题是,由于它同步发送电子邮件,后续页面加载需要很长时间.

我正在使用PHPMailer,如此示例https://github.com/PHPMailer/PHPMailer/blob/master/examples/gmail.phps所示

我想知道是否有办法使电子邮件传递异步.我对此进行了研究,发现sendmail可以选择将DeliveryMode设置为“后台模式” – 来源http://php.net/manual/en/function.mail.php

mail($to,$subject,$message,$headers,'O DeliveryMode=b');

我想知道在PHPMailer中是否可以做类似的事情?有人有这个成功吗?

编辑: – (附加信息)似乎PHPMailer可以配置为使用sendmail – https://github.com/PHPMailer/PHPMailer/blob/master/class.phpmailer.php
因此,我想知道是否可以某种方式利用它来启用后台交付.

/**
 * Which method to use to send mail.
 * Options: "mail","sendmail",or "smtp".
 * @type string
 */
public $Mailer = 'mail';

/**
 * The path to the sendmail program.
 * @type string
 */
public $Sendmail = '/usr/sbin/sendmail';
/**
 * Whether mail() uses a fully sendmail-compatible MTA.
 * One which supports sendmail's "-oi -f" options.
 * @type boolean
 */
public $UseSendmailOptions = true;

/**
 * Send messages using $Sendmail.
 * @return void
 */
public function isSendmail()
{
    $ini_sendmail_path = ini_get('sendmail_path');
    if (!stristr($ini_sendmail_path,'sendmail')) {
        $this->Sendmail = '/usr/sbin/sendmail';
    } else {
        $this->Sendmail = $ini_sendmail_path;
    }
    $this->Mailer = 'sendmail';
}

另外 – 显然有办法通过PHP.ini设置sendmail选项
http://blog.oneiroi.co.uk/linux/php/php-mail-making-it-not-suck-using-sendmail/

我更喜欢这样做作为api调用vs PHP.ini的内联参数,所以这不是一个全局变化.有没人试过这个?

错误的做法.

PHPMailer不是一个邮件服务器,这就是你所要求的. SMTP是一种冗长,繁琐的协议,容易出现延迟和吞吐量缓慢,并且绝对不适合在典型的网页提交过程中以交互方式发送(这是BlackHatSamurai可能正在做的问题).许多人正是这样做的,但不要误以为这是一个很好的解决方案,绝对不要试图自己实现MTA.

链接到的gmail示例使用SMTP到远程服务器,这将始终比在本地提交慢.如果您通过sendmail(或mail() – 它基本上是相同的事情)向本地服务器提交并且它花费的时间超过0.1秒,那么您正在做一些非常错误的事情.即使SMTP到localhost也不会花费太长时间,发送到附近的智能主机也不会太慢.

尝试使用线程来处理背景是一种巨大的蠕虫病毒,而这种方式并不是解决这个问题的方法 – 无论你以何种方式实现,与适当的邮件服务器相比都会很糟糕.只是不要这样做.

正确的方法是安装本地邮件服务器,并使用PHPMailer将消息提交给它.这种方式非常快(每秒数百条消息),并且你必须做任何事情才能使它工作,因为这是PHPMailer默认工作的方式.

然后,邮件服务器将执行它应该执行的操作 – 排队邮件,处理连接问题,交付延期,退回以及您未考虑的所有其他内容.

原文链接:https://www.f2er.com/php/133712.html

猜你在找的PHP相关文章