使用 Swift Mailer、GMail 和 PHP 发送电子邮件,权限被拒绝错误
Posted
技术标签:
【中文标题】使用 Swift Mailer、GMail 和 PHP 发送电子邮件,权限被拒绝错误【英文标题】:Sending email with Swift Mailer, GMail and PHP, Permission Denied Error 【发布时间】:2012-04-15 22:29:58 【问题描述】:我下载了 SwiftMailer 4.1.6 用于使用 Gmail 发送电子邮件。为此,我编写了以下代码。
<?php
require_once 'swiftmailer/lib/swift_required.php';
$transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 465, "ssl")
->setUsername('jomit.jmt@gmail.com')
->setPassword('***********');
$mailer = Swift_Mailer::newInstance($transport);
$message = Swift_Message::newInstance('Wonderful Subject')
->setFrom(array('jomit.jmt@gmail.com' => 'Jomit Jose'))
->setTo(array('jomit.jmt@gmail.com' => 'Jomit Jose'))
->setBody('This is the text of the mail send by Swift using SMTP transport.');
$numSent = $mailer->send($message);
printf("Sent %d messages\n", $numSent);
它导致了以下错误:
Fatal error: Uncaught exception 'Swift_TransportException' with message
'Connection could not be established with host smtp.gmail.com
[Permission denied #13]' in
/home/jomit/public_html/email_test/swiftmailer/lib/classes/Swift/Transport/StreamBuffer.php:266
Stack trace:
#0 /home/jomit/public_html/email_test/swiftmailer/lib/classes/Swift/Transport/StreamBuffer.php(66):
Swift_Transport_StreamBuffer->_establishSocketConnection()
#1 /home/jomit/public_html/email_test/swiftmailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php(117):
Swift_Transport_StreamBuffer->initialize(Array)
#2 /home/jomit/public_html/email_test/swiftmailer/lib/classes/Swift/Mailer.php(79):
Swift_Transport_AbstractSmtpTransport->start()
#3 /home/jomit/public_html/email_test/test.php(16):
Swift_Mailer->send(Object(Swift_Message))
#4 main thrown in /home/jomit/public_html/email_test/swiftmailer/lib/classes/Swift/Transport/StreamBuffer.php on line 266
可能出了什么问题?
【问题讨论】:
尝试使用 443 而不是 465 端口 @maxjackie 哎呀!它也会导致同样的错误:Uncaught exception 'Swift_TransportException' with message 'Connection could not be established with host smtp.gmail.com [Permission denied #13]'
您的 PHP 设置是否支持 SSL?
@ÁlvaroG.Vicario phpinfo()
显示OpenSSL support enabled
【参考方案1】:
我们遇到了这个问题,原因是 SELinux 设置阻止 Apache 和 PHP 打开任何传出套接字连接。我们已禁用它,但忘记了 -P
参数,因此在下次重新启动时将其恢复。如果您使用的是 CentOS、RHEL 或其他支持 SELinux 的发行版,这可能是导致问题的原因。
可以用这个命令禁用连接限制:
setsebool -P httpd_can_network_connect on
【讨论】:
很好的解决方案。为我工作。 在安装 OrangeHRM 时遇到此问题。我花了一段时间才找到这个隐藏的答案。非常感谢。 经过一整天的搜索,我找到了这篇文章,它解决了我的飞喷雾不发送电子邮件的问题,谢谢:) 我知道这已经过时了,但是如果您收到一条消息“无法在没有托管策略的情况下设置持久布尔值”,请尝试运行“sudo setsebool -P httpd_can_network_connect on” 这让我朝着正确的方向前进。在我的 PHP 服务器上,我有具有自动禁止 IP 的传出连接。我不得不进去并允许每个 smtp.office365.com 通过。以上是关于使用 Swift Mailer、GMail 和 PHP 发送电子邮件,权限被拒绝错误的主要内容,如果未能解决你的问题,请参考以下文章
使用 php、gmail 和 swiftmailer 发送电子邮件会导致与 SSL 相关的错误
PHP Mailer:从 gmail 向 yahoo 发送邮件,无法识别代码
我向其发送邮件的每个用户都会重复 PHP Mailer 邮件
使用Mailgun服务提供商在Google Cloud上使用Swift Mailer发送电子邮件