使用 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发送电子邮件

Django - 使用 django-mailer 发送批量邮件

Swift-Mailer 错误,“给定 [] 邮箱中的地址不符合 RFC”