美好的一天!
我试图让我的 phpmailer 在我的共享主机(freehostia.com)
中工作,但我总是收到此错误。我的Gmail的用户名和密码是正确的,其余的设置是这样的:
$mail = new PHPMailer;
$mail->isSMTP();
$mail->SMTPDebug = 2;
$mail->Host = 'tls://smtp.gmail.com'; // Specify main and backup SMTP servers
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = 'mymail@gmail.com'; // SMTP username
$mail->Password = 'mypassword'; // SMTP password
$mail->SMTPSecure = 'tls'; // Enable TLS encryption, `ssl` also accepted
$mail->Port = 587; // TCP port to connect to
$mail->setFrom('mymail@gmail.com', 'ASAPHOT Administrator'); // Add a recipient
$mail->addAddress('sorianorobertc@gmail.com'); // Name is optional
$mail->addReplyTo('mymail@gmail.com', 'ASAPHOT Administrator');
$mail->isHTML(true); // Set email format to HTML
$mail->Subject = 'it works';
$mail->Body = 'it works';
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
if (!$mail->send()) {
echo 'Message could not be sent.';
echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
echo 'Message has been sent';
}
OpenSSL在php.ini
中也没有注释。我在这里错过了什么吗?谢谢。
完整的错误消息:
Connection: opening to smtp.gmail.com:587, timeout=300, options=array ()
SMTP ERROR: Failed to connect to server: Permission denied (13)
SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting
Message could not be sent.Mailer Error: SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting
让我们先来看看答案!尝试使用以下命令:
$ getsebool httpd_can_sendmail
如果显示:httpd_can_sendmail --> off
用这个打开它:
$ sudo setsebool -P httpd_can_sendmail 1
然后尝试再次发送电子邮件。
这个解决方案来自这个伟大的页面。
正如本文中指出的那样,您可能还需要尝试 sudo setsebool -P httpd_can_network_connect 1
.而对于由 DigitalOcean 托管的 CentOS 7 虚拟机,则没有必要。
我遇到的问题是无法从Drupal网站发送电子邮件,SMTP身份验证支持模块依赖于PHPMailer。使用的SMTP服务器是谷歌。
顺便说一句,我怀疑这是OpenSSL证书问题,并做了一些测试,但没有运气。因此,通过从 PHPMailer 源代码中将$SMTPDebug
级别设置为 2,我能够捕获"权限被拒绝 (13("错误消息。
这表明 fopen 包装器或套接字函数在 PHP 安装中被禁用。在共享主机中并不罕见。跑步phpinfo()
应该告诉你。
您可能可以使用$mail->isMail();
并跳过身份验证通过ISP的邮件服务器而不是SMTP发送,但要注意SPF问题。
问题是Freehostia的免费托管会阻止传出邮件。
Freehostia在免费计划中阻止了下面的列表。(巧克力(
-邮件
-卷曲
-肥皂得到
-xml get
这对
http很重要
- getsebool httpd_can_sendmail 关闭然后打开它须藤塞布尔 -P httpd_can_sendmail 1
- 可能需要 sudo 'setebool -P httpd_can_network_connect 1'
- disable_function = ...在 PHP 中删除 exec(( 的 exec.ini
use this
$mail->SMTPAuth = true; // enable SMTP authentication
$mail->SMTPSecure = "ssl"; // sets the prefix to the servier
$mail->Host = "ssl://smtp.gmail.com"; // sets GMAIL as the SMTP server
$mail->Port = 465; // set the SMTP port
如果这不起作用,请尝试PHP代码。
邮件($to,$subject,$message(;