我尝试使用PHPMailer从联系表单发送电子邮件。提交后,服务器响应时间超过5分钟,然后生成ERROR 405 Not Allowed - ngnix
。
我在webmaster@mydomain.com上使用SMTP Auth,SMTP服务器位于voyager.websitewelcome.com。我想,"可能是因为跨域提交,即使这不是AJAX而且都是PHP?"
不,请看下面的答案:
mail = new PHPMailer;
$mail->isSMTP();
$mail->Host = 'voyager.websitewelcome.com';
$mail->SMTPAuth = true;
$mail->Username = 'webmaster@mydomain.com';
$mail->Password = 'mypassword';
$mail->SMTPSecure = 'tls'; //<---- THIS is the problem
$mail->Port = 465;
$mail->setFrom('webmaster@mydomain', 'My Company Kiosk');
$mail->addAddress('me@mydomain.com', 'My Name');
$mail->isHTML(true);
$mail->Subject = 'New Lead from My Company';
$mail->Body = '<b>test</b> html'; //$body;
$mail->AltBody = 'test text';
try {
$mail->send();
//echo $output;
}
catch (phpmailerException $e) {
echo $e->errorMessage();
} catch (Exception $e) {
$e->getMessage();
}
答案 0 :(得分:2)
并非服务器不允许TLS,而是您尝试使用明确的SSL(SMTP+STARTTLS
== 'tls'
PHPMailer)在端口上期望隐式SSL(SMTPS
)。您也可以通过设置$mail->Port = 587;
来修复它(以自1998年以来未被弃用的方式),这是the documentation建议的内容(查看&#34;使用加密&#34;)。
顺便提一下,你的错误捕获不起作用,因为默认情况下PHPMailer不会抛出异常,你需要将true
传递给构造函数来启用它们,如下所示:
$mail = new PHPMailer(true);
答案 1 :(得分:0)
在写这个问题的过程中,“TLS”引起了我的注意。我从没想过要改变这个,我的SMTP服务器不允许TLS!
我已经阅读了很多帖子,试图解决这个问题。我以为有人应该发布一个可能的答案!
$mail->SMTPSecure = 'ssl';