我在使用Exim 4.87的服务器上有一个PHPMailer 5.2.16,它还有一个用于安全连接的TLS证书。
我的PHP因此:
class MailerSMTP extends PHPMailer {
/***
* Mailer for authenticated SMTP emails using account mail system
***/
public function __construct(){
$this->AddReplyTo('...', '...');
$this->setFrom('...', '...');
$this->Host = "hostname.co.uk";
$this->isSMTP();
$this->Timeout = 20;
$this->SMTPAuth = true;
$this->SMTPSecure = "tls";
$this->Port = "587";
$this->Username = 'emailuser';
$this->Password = 'emailpass';
}
}
这显然是在脚本上调用并填充了接收者和消息等。
然而,SMTPSecure
方面增加了 2秒(有时甚至更多)到发送消息所花费的时间。目前这个延迟是在单个邮件发送上,我希望希望(我想我在某处读到)只需要调用一次SMTP安全就可以向X个收件人发送X个邮件。
奖金问题:
我想我可以做这样的事情:
$sender = new MailerSMTP();
$sender->subject ="hello";
$sender->Body = "message";
foreach($receiver as $row){
$sender->addAddress($row['email']);
$sender->send();
$sender->clearAddresses();
}
这会发送只有2秒SMTPSecure
延迟的所有电子邮件吗?
答案 0 :(得分:1)
是的,TLS增加了一些连接开销。您可以通过SMTP而不使用TLS提交到本地邮件服务器来避免这种情况 - 这是释放脚本的最快方法。它仍然是安全的,因为它不会离开服务器,您可以配置您的邮件服务器从那里安全地中继。
你几乎就是多条消息,但我建议你查看PHPMailer提供的mailing list example。一次发送多条消息时最重要的是启用keepalive,这样可以避免重复每条消息的连接开销。