2013-02-26 105 views
4

刚刚更新我的swiftmailer结帐到最新版本4.3.0。下面非常简单的代码不再起作用,并且连接超时:swiftmailer完全破解为smtp?

<? 
require_once 'Swift-4.3.0/lib/swift_required.php'; 

$transport = Swift_SmtpTransport::newInstance('email-smtp.us-east-1.amazonaws.com',465, 'tls') 
    ->setUsername('USERNAME') 
    ->setPassword('PASSWORD') 
    ; 
$mailer = Swift_Mailer::newInstance($transport); 

// Create a message 
$message = Swift_Message::newInstance('Yo') 
    ->setFrom(array('[email protected]' => 'Josh')) 
    ->setTo(array('[email protected]')) 
    ->setBody('Here is the message itself') 
    ; 

$result = $mailer->send($message); 

然后我得到如下:

PHP Fatal error: Uncaught exception 'Swift_IoException' with message 'Connection to tcp://email-smtp.us-east-1.amazonaws.com:465 Timed Out' in /home/jnankin/Desktop/Swift-4.3.0/lib/classes/Swift/Transport/StreamBuffer.php:169 
Stack trace: 
#0 /home/jnankin/Desktop/Swift-4.3.0/lib/classes/Swift/Transport/AbstractSmtpTransport.php(400): Swift_Transport_StreamBuffer->readLine(0) 
#1 /home/jnankin/Desktop/Swift-4.3.0/lib/classes/Swift/Transport/AbstractSmtpTransport.php(291): Swift_Transport_AbstractSmtpTransport->_getFullResponse(0) 
#2 /home/jnankin/Desktop/Swift-4.3.0/lib/classes/Swift/Transport/AbstractSmtpTransport.php(119): Swift_Transport_AbstractSmtpTransport->_readGreeting() 
#3 /home/jnankin/Desktop/Swift-4.3.0/lib/classes/Swift/Mailer.php(80): Swift_Transport_AbstractSmtpTransport->start() 
#4 /home/jnankin/Desktop/email.php(17): Swift_Mailer->send(Object(Swift_Message)) 
#5 {main} 
    thrown in /home/jnankin/Desktop/Swift-4.3.0/lib/classes/Swift/Transport/StreamBuffer.php on line 169 

UPDATE:此完全相同的代码(不用任何改动)工程在版本4.1.2中。版本4.1.3不再有效。我尝试过不同的SMTP服务器:mailgun,sendgrid等...这似乎swiftmailer特定。

+0

您是否尝试过使用其他服务器? – jeroen 2013-02-26 16:08:12

+0

是的,请参阅更新 – 2013-02-26 16:14:08

回答

13

看起来像从版本4.1.3开始Swiftmailer添加starttls支持。在版本4.1.2和eariler中,使用端口465并指定'tls'作为加密方法运行良好。但4.1.3看起来不支持使用tls包装器,只允许starttls。换句话说,“tls”的意思是“tls wrapper”,意思是“starttls”。因此,将端口改为587而不是465(因为SES文档应该用于starttls连接)为我解决了这个问题。

swiftmailer imho非常不好的举动。