在发送简报类邮件时,我遇到了这个奇怪的问题。
在for循环中,我遍历数据库中的所有用户,并尝试向他们发送包含一些基本信息的所有HTML邮件。现在问题是前200个邮件运行良好,但随后脚本崩溃并发出以下错误:
Warning: fwrite(): SSL operation failed with code 1. OpenSSL Error messages: error:140D00CF:SSL routines:SSL_write:protocol is shutdown in /opt/zendframework2/library/Zend/Mail/Protocol/AbstractProtocol.php on line 263 Warning: fwrite(): SSL operation failed with code 1. OpenSSL Error messages: error:140D00CF:SSL routines:SSL_write:protocol is shutdown in /opt/zendframework2/library/Zend/Mail/Protocol/AbstractProtocol.php on line 263 Fatal error: Uncaught exception 'Zend\Mail\Protocol\Exception\RuntimeException' with message 'Could not read from smtp.gmail.com' in /opt/zendframework2/library/Zend/Mail/Protocol/AbstractProtocol.php:308 Stack trace: #0 /opt/zendframework2/library/Zend/Mail/Protocol/AbstractProtocol.php(339): Zend\Mail\Protocol\AbstractProtocol->_receive(300) #1 /opt/zendframework2/library/Zend/Mail/Protocol/Smtp.php(358): Zend\Mail\Protocol\AbstractProtocol->_expect(221, 300) #2 /opt/zendframework2/library/Zend/Mail/Protocol/Smtp.php(394): Zend\Mail\Protocol\Smtp->quit() #3 /opt/zendframework2/library/Zend/Mail/Protocol/AbstractProtocol.php(115): Zend\Mail\Protocol\Smtp->_disconnect() #4 [internal function]: Zend\Mail\Protocol\AbstractProtocol->__destruct() #5 {main} thrown in /opt/zendframework2/library/Zend/Mail/Protocol/AbstractProtocol.php on line 308
现在,我不熟悉smtp,ssl&但我相信错误最重要的一行是:'无法读取smtp.gmail.com'。这对我没有任何意义。
我们一直发送电子邮件(丢失密码,注册邮件等),这总是(据我所知)工作正常。该脚本在短时间内发送过多邮件后崩溃。
好的,这就是问题,现在让我解释一下设置:)
我在标准LAMP服务器(PHP 5.3.10)上运行Zend 2.2.6并使用Zend提供的标准SMTP邮件脚本。我们将Google商家应用用作邮件客户端。以下是邮件脚本的前几行:
<?PHP
namespace Mail\Mails;
use Zend\Mail;
use Zend\Mail\Message;
use Zend\Mime\Message as MimeMessage;
use Zend\Mime\Part as MimePart;
use Zend\Mail\Transport\Smtp as SmtpTransport;
use Zend\Mail\Transport\SmtpOptions;
use Mail\Config\Config;
class Base
{
private $transport, $text, $html, $to, $subject;
public function __construct()
{
$config = new Config();
$transport = new SmtpTransport();
$options = new SmtpOptions(array(
'name' => 'mydomain.com',
'host' => 'smtp.gmail.com',
'port' => 587,
'connection_class' => 'login',
'connection_config' => array(
'username' => $config->username,
'password' => $config->password,
'ssl' => 'tls'
),
));
$transport->setOptions($options);
$this->transport = $transport;
// This happens in different parts of the code.
$this->subject( $subject );
$this->to( $address );
$this->html( $html );
$this->text( $text );
$this->send();
}
?>
到目前为止我已尝试过:
有人熟悉这个问题吗?我不确定在哪里寻找问题,也许有人可以帮我推动正确的方向?
提前致谢!
答案 0 :(得分:3)
较旧的网站,但可能是你的问题
http://www.serversmtp.com/en/limits-of-gmail-smtp-server
这是因为Google对营销人员使用SMTP服务施加了各种限制。这些限制始于对可以接收相同消息的接收者数量的限制。如果Gmail的SMTP服务器检测到您的邮件超过500人,则会停用您的帐户。