猿问

如何解决服务器 filezilla 上的联系表单(phpmailer)上的错误?

我正在使用 PHPmailer 作为我的联系表,当我用 XAMPP 打开我的网站时它可以工作,但是当我将网站上传到在线服务器(filezilla)时,联系表显示错误。


use PHPMailer\PHPMailer\PHPMailer;


use PHPMailer\PHPMailer\Exception;


require 'vendor/autoload.php';



$error = '';

$name = '';

$email = '';

$subject = '';

$message = '';


function clean_text($string)

{

 $string = trim($string);

 $string = stripslashes($string);

 $string = htmlspecialchars($string);

 return $string;

}


if(isset($_POST["submit"]))

{

 if(empty($_POST["name"]))

 {

  $error .= '<p><label class="text-danger">*Por Favor Insira o seu Nome</label></p>';

 }

 else

 {

  $name = clean_text($_POST["name"]);

  if(!preg_match("/^[a-zA-Z ]*$/",$name))

  {

   $error .= '<p><label class="text-danger">Apenas letras e espaços em branco sao permitidos</label></p>';

  }

 }

 if(empty($_POST["email"]))

 {

  $error .= '<p><label class="text-danger">*Por Favor Insira o seu Email</label></p>';

 }

 else

 {

  $email = clean_text($_POST["email"]);

  if(!filter_var($email, FILTER_VALIDATE_EMAIL))

  {

   $error .= '<p><label class="text-danger">Formato de email inválido</label></p>';

  }

 }

 if(empty($_POST["subject"]))

 {

  $error .= '<p><label class="text-danger">*Por Favor Insira o seu Assunto</label></p>';

 }

 else

 {

  $subject = clean_text($_POST["subject"]);

 }

 if(empty($_POST["message"]))

 {

  $error .= '<p><label class="text-danger">Por Favor Insira a sua Mensagem</label></p>';

 }


显示错误:

致命错误:未捕获的 PHPMailer\PHPMailer\Exception:SMTP 连接()失败。https://github.com/PHPMailer/PHPMailer/wiki//home1/carvalho/public_html/vendor/phpmailer/phpmailer/src/PHPMailer.php:1775中的疑难解答:#0 /home1/carvalho/public_html/vendor/ phpmailer/phpmailer/src/PHPMailer.php(1516): PHPMailer\PHPMailer\PHPMailer->smtpSend('Date: Thu, 12 S...', '\r\n\r\n ...') #1 /home1/carvalho/public_html/vendor/phpmailer/phpmailer/src/PHPMailer.php(1352): PHPMailer\PHPMailer\PHPMailer->postSend() #2 /home1/carvalho/public_html/contact2.php(119): PHPMailer\ PHPMailer\PHPMailer->send() #3 {main} 在第 1775 行的 /home1/carvalho/public_html/vendor/phpmailer/phpmailer/src/PHPMailer.php 中抛出


慕斯709654
浏览 136回答 2
2回答

莫回无

如果您确定凭据正确,请检查 PORT 和 SMTP 安全,因为:端口 25 不需要 ssl / tls 支持端口 465 用于 ssl 端口 587 用于 tls像这样修复您的代码:$mail = new PHPMailer(true);$mail->CharSet = "UTF-8";$mail->IsSMTP();&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;$mail->Host = 'smtp.sapo.pt';&nbsp;&nbsp;$mail->Port = 587; // this for "tls" connection&nbsp;&nbsp;$mail->SMTPAuth = true;&nbsp; &nbsp; &nbsp;&nbsp;$mail->Username = '...@sapo.pt';$mail->Password = '*****';&nbsp;&nbsp;$mail->SMTPSecure = 'tls'; // this require 587&nbsp; &nbsp;&nbsp;$mail->From = $_POST["email"];&nbsp; &nbsp;&nbsp;$mail->FromName = $_POST["name"];&nbsp; &nbsp;$mail->addAddress('....@sapo.pt ', 'namecompany');$mail->WordWrap = 50;&nbsp; &nbsp; &nbsp; &nbsp;$mail->IsHTML(true);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;$mail->Subject = $_POST["subject"];

白衣非少年

您的 SMTP 凭据在生产服务器上不同。您只需要获得有效的凭据
随时随地看视频慕课网APP
我要回答