首页 > 解决方案 > PHP 邮件程序在本地工作,但不能在实时服务器上工作

问题描述

我正在制作一个应用程序,它会在注册后向用户发送一封电子邮件,以获取 PHPMailer 的激活链接。它在本地主机上运行完美,但不能在现场运行。在网上搜索了太多解决方案,但没有奏效。尝试了以下事情。

1)检查服务器上的开放端口。telnet是连接成功。

2)安装ssl证书并尝试$mail->SMTPSecure = 'ssl';。也不起作用。

3) 使用 Gmail 和我的 (1and1) SMTP 服务器。两者都在现场失​​败。

4)试过$mail->SMTPSecure = 'tls';$mail->SMTPSecure = 'ssl';。都没有奏效。

5)使用纯密码$mail->Password(无特殊字符)

当我运行 PHPMailer 的代码时,它不会显示任何错误,它会继续加载和加载。库路径 arr 添加正确(在现场工作正常)。整个电子邮件正在正确构建。但是当我打电话时$mail->Send();,它会永远加载。如果我对此行发表评论,则页面会正确加载(但不会发送电子邮件,因为 send() 已被评论)。我的代码如下所示。

require_once '../libs/PHPMailer/src/PHPMailer.php';
require_once '../libs/PHPMailer/src/SMTP.php';
require_once '../libs/PHPMailer/src/Exception.php';

 $email = "emailToThisAddress@gmail.com";
 $first_name = "first";
 $last_name = "last";

$mail = new PHPMailer(true);
//Tell PHPMailer to use SMTP
$mail->isSMTP();

try {

$mail->Host = "auth.smtp.1and1.co.uk";
$mail->SMTPDebug = 4;
$mail->SMTPSecure = 'tls';
$mail->SMTPAuth = true;
$mail->Port = 587;
$mail->CharSet = 'UTF-8';

$mail->Username = "help@mysite.com";
$mail->Password = "secret";
$mail->addAddress($email, $first_name . " " . $last_name);
$mail->setFrom('help@mysite.com', 'Signup');

$mail->Subject = 'Complete your Sign Up';
$mail->AltBody = 'To view the message, please use an HTML compatible email viewer!';
$body = HTML_BODY_HERE"";

$mail->MsgHTML($body);
$mail->Send();

} catch (phpmailerException $e) {
echo $e->errorMessage();
} catch (Exception $e) {
echo $e->getMessage();
}

标签: phpemail

解决方案


推荐阅读