无法使用gmail smtp和swift邮件程序发送邮件

时间:2012-03-21 22:54:55

标签: php smtp gmail swiftmailer

我无法通过swift mailer上的gmail smtp发送电子邮件,这里是代码:

<?php

require_once 'inc/swift_mailer/lib/swift_required.php';
$transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 465, 'ssl')
  ->setUsername('mysen2@gmail.com')
  ->setPassword('bestpasswordever')
  ;
$transport->setLocalDomain('[127.0.0.1]');
$mailer = Swift_Mailer::newInstance($transport);

$message = Swift_Message::newInstance($transport)
  ->setSubject('Test Mail')
  ->setFrom(array('mysen2@gmail.com' => 'John Doe'))
  ->setTo(array('testin3@gmail.com'))
  ->setBody('This is the test message.')
  ->addPart('<q>Here is the message itself</q>', 'text/html');

    if (!$mailer->send($message, $failures))
    {
        die("Errors occurred:<br/>" . $failures);
    }

?>

错误信息:

  

致命错误:未捕获异常'Swift_TransportException'   消息'无法与主机smtp.gmail.com建立连接   [无法找到套接字传输“ssl” - 您是否忘记启用   它配置PHP时? #-27264]'in   /swift_mailer/lib/classes/Swift/Transport/StreamBuffer.php:266   堆栈跟踪:#0   /swift_mailer/lib/classes/Swift/Transport/StreamBuffer.php(66):   Swift_Transport_StreamBuffer-&gt; _establishSocketConnection()#1   /swift_mailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php(117):   Swift_Transport_StreamBuffer-&gt; initialize(Array)#2   /swift_mailer/lib/classes/Swift/Mailer.php(79):   Swift_Transport_AbstractSmtpTransport-&gt; start()#3   /usr/local/www/data/mail.php(19):   Swift_Mailer-&gt; send(Object(Swift_Message),Array)#4 {main}抛出   /swift_mailer/lib/classes/Swift/Transport/StreamBuffer.php   在第266行

我猜我的服务器没有包含open ssl库的问题:

  

[无法找到套接字传输“ssl” - 您是否忘记启用   你配置PHP时呢?

我该如何解决呢?

使用gmails SMTP是否适合每天发送50-100封邮件?或者我应该使用别的东西(你可以自由地建议并给我一些提示)?

1 个答案:

答案 0 :(得分:4)

您可以使用[Unable to find the socket transport "ssl" - did you forget to enable it when you configured PHP?选项重新编译PHP来修复--with-ssl[=DIR]

为了能够这样做,您必须将OpenSSL库安装到您的服务器上。根据您的操作系统,您可以在Debian / Ubuntu上执行apt-get install openssl-dev或在RedHat / CentOS / Fedora上执行yum install openssl-devel

或者,您可以自己下载并编译最新版本的OpenSSL,并将其与PHP一起使用。

如果您没有运行服务器,那么您需要让您的主机为您启用PHP中的SSL。

另外:Gmail可以正常运行,每天发送50-100封电子邮件。但这取决于。查看他们的Program Policies for Gmail,其中没有详细介绍。听起来如果您与每天发送电子邮件的50-100人之间存在预先存在的关系,那么您可能不会违反任何条款,但您​​可能希望通过直接联系他们或更多地搜索他们的条款来确认