我正在使用
phpMailer使用谷歌应用程序地址/ smtp发送购买确认.整个事情在开发盒上工作得很好,但现在它已经存在,似乎我正在使用的端口(465)被阻止了.
所以我编辑iptables:
-A INPUT -p tcp -dport 465 -j ACCEPT -A INPUT -p tcp -sport 465 -j ACCEPT
我的理解是,这允许入站和465上的出站连接(如果我错了,请纠正我).重启iptables后:
iptables -nL Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:465 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:465
但是我仍然收到来自PHPMailer的“无法连接到服务器:权限被拒绝”作为调试.从我所读到的,这通常表明该端口已关闭,& evidently就是这样.
有关如何进一步调试的任何提示?任何帮助将非常感激.
万一它有帮助,这里是PHP:
$mail = new PHPMailer(); $mail->IsSMTP(); $mail->SMTPDebug = 1; //!DEV $mail->SMTPAuth = true; $mail->SMTPSecure = 'ssl'; $mail->Host = 'smtp.gmail.com'; $mail->Port = 465; $mail->Username = $emailAddress; $mail->Password = $emailPassword; $mail->SetFrom($emailAddress,'PURCHASE ORDER'); $mail->AddAddress($customerEmail); $mail->AddAddress($salesEmail); $mail->Subject = $subject; $mail->Body = $body; $mail->Send() or die('Error: ' . $mail->ErrorInfo);
*编辑:邮件程序在开发服务器上完美运行 – 有关比较可能不同的方法的任何建议吗?相同的操作系统,相同的PHP …我很难过!
您告诉您的服务器接受端口465上的传入连接,但是您也告诉它连接到smtp.gmail.com这是一个出站连接.
您需要打开相同的端口,但是在OUTPUT链而不是INPUT链上:
-A OUTPUT -p tcp –dport 465 -j ACCEPT
要从终端进行编辑,命令将是:
iptables -A OUTPUT -p tcp –dport 465 -j ACCEPT