PHPMailer、Gmail 的 SMTP 连接()失败错误

Dev*_*est 5 php email smtp phpmailer

I\xe2\x80\x99m 尝试制作联系表单,而 I\xe2\x80\x99m 使用 PHPMailer。我在 localhost 上用 xampp 尝试过,效果很完美。但是当我上传到我的主机时,我收到错误 SMTP connect() failed。

\n\n

这是我的代码:

\n\n
$m = new PHPMailer;\n\n$m->isSMTP();\n$m->SMTPAuth = true;\n\n$m->Host = "smtp.gmail.com";\n$m->Username = "mymail@gmail.com";\n$m->Password = "mypass";\n$m->SMTPSecure = "ssl";\n$m->Port = "465";\n\n$m->isHTML();\n\n$m->Subject = "Hello world";\n$m->Body = "Some content";\n\n$m->FromName = "Contact";\n\n$m->addAddress(\'mymail@gmail.com\', \'Test\');\n
Run Code Online (Sandbox Code Playgroud)\n\n

我尝试将端口更改为 587,将 SMTPsecure 更改为 tls(以及所有组合)。但 \xe2\x80\x99 不起作用。有什么建议可以解决这个问题吗?

\n\n

谢谢

\n

CH3*_*H3M 3

您可能需要指定要发送消息的地址,如下所示:

$mail->From = 'user@domain.com';
Run Code Online (Sandbox Code Playgroud)

我还会给 isHTML 一个参数,true 或 false:

$m->isHTML(true);
Run Code Online (Sandbox Code Playgroud)

另一种选择是尝试完全放弃端口规范。您可能会发现其他几个有用的参数。以下示例是我测试过的代码,看看您是否可以根据您的用途进行调整:

$mail = new PHPMailer;
$mail->isSMTP();/*Set mailer to use SMTP*/
$mail->Host = 'mail.domain.com';/*Specify main and backup SMTP servers*/
$mail->Port = 587;
$mail->SMTPAuth = true;/*Enable SMTP authentication*/
$mail->Username = $username;/*SMTP username*/
$mail->Password = $password;/*SMTP password*/
/*$mail->SMTPSecure = 'tls';*//*Enable encryption, 'ssl' also accepted*/
$mail->From = 'user@domain.com';
$mail->FromName = $name;
$mail->addAddress($to, 'Recipients Name');/*Add a recipient*/
$mail->addReplyTo($email, $name);
/*$mail->addCC('cc@example.com');*/
/*$mail->addBCC('bcc@example.com');*/
$mail->WordWrap = 70;/*DEFAULT = Set word wrap to 50 characters*/
$mail->addAttachment('../tmp/' . $varfile, $varfile);/*Add attachments*/
/*$mail->addAttachment('/tmp/image.jpg', 'new.jpg');*/
/*$mail->addAttachment('/tmp/image.jpg', 'new.jpg');*/
$mail->isHTML(false);/*Set email format to HTML (default = true)*/
$mail->Subject = $subject;
$mail->Body    = $message;
$mail->AltBody = $message;
if(!$mail->send()) {
    echo 'Message could not be sent.';
    echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
    header("Location: ../docs/confirmSubmit.html");
}
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!