【问题标题】:Troubleshooting PHPMailer with Bluehost使用 Bluehost 对 PHPMailer 进行故障排除
【发布时间】:2018-11-27 07:13:56
【问题描述】:

尝试为我在 Bluehost 上托管的网站设置 PHPMailer,经过一整天的研究和故障排除后,我无法正常工作。

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

这是我发现的关于 Bluehost SMTP 的内容。

安全 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 文件夹)位于与包含上述代码的文件位于同一目录的“供应商”文件夹中。

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

【问题讨论】:

  • 您在 500 上总是做的第一件事就是检查服务器的错误日志!
  • 错误日志显示PHP Parse error: syntax error, unexpected T_STRING, expecting T_CONSTANT_ENCAPSED_STRING or '(' in FILENAME on line 4 在看到this question 的答案后,我联系了Bluehost 并意识到我的网站运行的是PHP5.2,所以我更新到了PHP7,现在它正在运行! :)

标签: php smtp phpmailer


【解决方案1】:

许多示例和the docs 中都涵盖了加密和端口设置的组合将起作用的内容。

你有Port = 465SMTPSecure = 'tls';那是行不通的。将Port 更改为587,或将SMTPSecure 更改为'ssl'(但不是两者!)。就目前而言,您正在尝试打开与需要隐式 TLS 的端口的连接,同时使用需要使用 STARTTLS 使其显式化的协议,但这是行不通的。

【讨论】:

  • 这非常有帮助,并且可以按照上面@misorude 的建议查看服务器错误日志。
  • 如果您对此答案感到满意,请使用旁边的复选标记将其选为您选择的答案。
猜你喜欢
  • 2019-06-30
  • 1970-01-01
  • 2020-10-02
  • 2011-02-07
  • 2013-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多