获取PHPMailer上的错误405(不允许)

获取PHPMailer上的错误405(不允许),php,phpmailer,http-status-code-405,Php,Phpmailer,Http Status Code 405,我正在尝试使用PHPMailer从联系人表单发送电子邮件。提交后,服务器的响应时间超过5分钟,然后导致错误405 Not Allowed-ngnix 我正在使用来自的SMTP身份验证webmaster@mydomain.com,SMTP服务器位于voyager.websitewelcome.com。我想,“这可能是因为跨域提交,即使这不是AJAX,而是PHP?” 不,请参阅下面的答案: mail = new PHPMailer; $mail->isSMTP(); $mail->Ho

我正在尝试使用PHPMailer从联系人表单发送电子邮件。提交后,服务器的响应时间超过5分钟,然后导致
错误405 Not Allowed-ngnix

我正在使用来自的SMTP身份验证webmaster@mydomain.com,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();
}
mail=新的PHPMailer;
$mail->isSMTP();
$mail->Host='voyager.websitewelcome.com';
$mail->SMTPAuth=true;
$mail->Username=webmaster@mydomain.com';
$mail->Password='mypassword';
$mail->SMTPSecure='tls'//端口=465;
$mail->setFrom('webmaster@mydomain“我的公司信息亭”);
$mail->addAddress('me@mydomain.com","我的名字",;
$mail->isHTML(true);
$mail->Subject='我公司的新潜在客户';
$mail->Body='testhtml'//$身体;
$mail->AltBody='testtext';
试一试{
$mail->send();
//echo$输出;
}
捕获(phpmailerException$e){
echo$e->errorMessage();
}捕获(例外$e){
$e->getMessage();
}

在写这个问题的过程中,“TLS”引起了我的注意。我从来没有想过要改变这一点,我的SMTP服务器不允许TLS

我读了很多文章试图弄明白这一点。我想应该有人发布一个可能的答案

$mail->SMTPSecure = 'ssl';

不是服务器不允许TLS,而是您试图在一个需要隐式SSL的端口上使用显式SSL(
SMTPS
==
'TLS'
,在PHPMailer中)。您还可以通过设置
$mail->Port=587来修复它(以自1998年以来未被弃用的方式),这就是建议(请查看“使用加密”)

顺便说一句,由于PHPMailer在默认情况下不会引发异常,因此错误捕获将无法工作,您需要将
true
传递给构造函数以启用异常,如下所示:

$mail = new PHPMailer(true);

谢谢更新的答案!这比我偶然发现的信息要丰富得多。我的SMTP服务器安装建议声称在该端口上同时接受TLS和SSL,所以我不想尝试端口587。我将尝试一下,因为TLS更安全,这涉及到客户的个人信息。如果不行的话,我会打电话给他们,看看那家伙是否知道端口配置。谢谢你关于错误捕获的更新,我完全错过了。