使用Bluehost排除PHPMailer故障

使用Bluehost排除PHPMailer故障,php,smtp,phpmailer,Php,Smtp,Phpmailer,试图为我在Bluehost上托管的站点设置PHPMailer,经过一整天的研究和故障排除,我无法让它工作 我是一个初学者,所以我为这个新手问题提前道歉,但我一直在阅读我能找到的所有东西,包括和,以及解决这个问题的方法,但似乎无法正确设置我的。非常感谢任何关于我做错了什么的指导、想法或调试方法 这就是我发现的 建议使用安全SSL/TLS设置 用户名您的电子邮件地址:john@example.com 密码该电子邮件帐户的密码。 传入服务器mail.example.com* 传入端口993 IMAP或

试图为我在Bluehost上托管的站点设置PHPMailer,经过一整天的研究和故障排除,我无法让它工作

我是一个初学者,所以我为这个新手问题提前道歉,但我一直在阅读我能找到的所有东西,包括和,以及解决这个问题的方法,但似乎无法正确设置我的。非常感谢任何关于我做错了什么的指导、想法或调试方法

这就是我发现的

建议使用安全SSL/TLS设置 用户名您的电子邮件地址:john@example.com 密码该电子邮件帐户的密码。 传入服务器mail.example.com* 传入端口993 IMAP或995 POP3 发件服务器mail.example.com* 传出端口465 SMTP 身份验证密码 *将example.com替换为您的域名

下面是我在文件中使用的个人信息

<?php

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

//Load Composer's autoloader
require 'vendor/autoload.php';

$mail = new PHPMailer(true);     
try {
    //Server settings
    $mail->SMTPDebug = 2;             
    $mail->isSMTP();                  
    $mail->Host = 'mail.MYDOMAIN.com';  
    $mail->SMTPAuth = true;            
    $mail->Username = 'MYEMAIL@MYDOMAIN.com';   
    $mail->Password = 'MYEMAILPASSWORD';        
    $mail->SMTPSecure = 'tls';                  
    $mail->Port = 465;                          

    //Recipients
    $mail->setFrom('MYEMAIL@MYDOMAIN.com');
    $mail->addAddress('MYEMAIL@MYDOMAIN.com'); 

    //Content
    $mail->isHTML(true);            
    $mail->Subject = 'Here is the subject';
    $mail->Body    = 'This is the HTML message body <b>in bold!</b>';
    $mail->AltBody = 'This is the body in plain text for non-HTML mail clients';

    $mail->send();
    echo 'Message has been sent';
} catch (Exception $e) {
    echo 'Message could not be sent. Mailer Error: ', $mail->ErrorInfo;
}
我使用Composer安装了PHPMailer,因此autoload.php文件和PHPMailer文件夹位于“vendor”文件夹中,该文件夹与包含上述代码的文件位于同一目录中

上传到我的Bluehost服务器后,当我试图在浏览器中显示包含此代码的网页时,我得到了HTTP错误500屏幕截图,当然没有发送电子邮件


许多示例中都介绍了这一点,即加密和端口设置的组合将起作用


您有端口=465和SMTPSecure='tls';那不行。请将端口更改为587,或将SMTPSecure更改为“ssl”,但不能同时更改两者!。目前,您正在尝试打开一个到一个端口的连接,该端口需要隐式TLS,而使用的协议需要使用STARTTLS使其显式,这是行不通的。

在500上,您总是要做的第一件事是检查服务器的错误日志!错误日志显示PHP解析错误:语法错误、意外的T_字符串、预期T_常量_封装的_字符串或第4行的文件名在看到的答案后,我联系了Bluehost,意识到我的站点运行的是PHP5.2,所以我更新到PHP7,现在它正在工作!:这非常有帮助,还可以按照上面@misorude的建议查看服务器错误日志。如果您对此答案感到满意,请使用旁边的复选标记将其选择为您选择的答案。