我无法通过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封邮件?或者我应该使用别的东西(你可以自由地建议并给我一些提示)?
答案 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人之间存在预先存在的关系,那么您可能不会违反任何条款,但您可能希望通过直接联系他们或更多地搜索他们的条款来确认