无法实例化邮件功能:PHPMailer错误

时间:2018-10-25 12:07:14

标签: php email phpmailer

我正在尝试创建联系表格。我在互联网上搜索了如何发送电子邮件,他们总是说使用PHPMailer比使用mail()函数更好。

联系方式包括:姓名,电子邮件,评论和发送按钮。

我刚刚遵循了本教程:https://alexwebdevelop.com/phpmailer-tutorial/,但由于我总是遇到名为“无法实例化邮件功能”的错误,因此无法正常工作。当我已经安装Composer时。

证明我已经安装了作曲家: Composer installed with autoload.php

这是我在php标记内的代码:

use PHPMailer\PHPMailer\PHPMailer;
require 'C:\xampp\composer\vendor\autoload.php';

if(isset($_POST['send'])) {
    $em = $_POST['email'];
    $nm = $_POST['name'];
    $msg = $_POST['comments'];

    $mail = new PHPMailer();
    $mail->setFrom($em, $nm);
    $mail->addAddress('mygmail@gmail.com', 'Admin');
    $mail->Subject = 'Concern';
    $mail->isHTML(TRUE);
    $mail->Body = '$em';

    if(!$mail->send()) {
        echo $mail->ErrorInfo;
    }
}

谢谢您回答这个问题!这将是很大的帮助!

更新:
composer.json的内容/文件:

{
    “要求”:{
        “ phpmailer / phpmailer”:“ ^ 6.0”
    }
}

3 个答案:

答案 0 :(得分:0)

如果您阅读了几乎所有地方(包括错误消息中)链接的PHPMailer故障排除指南,则会发现其中包含a detailed explanation for this error以及解决方法。从那里复制:

这意味着您的PHP安装未配置为正确调用mail()函数(例如sendmail_path中的php.ini设置不正确),或者您未安装本地邮件服务器和配置。要解决此问题,您需要执行以下一项或多项操作:

  • 安装本地邮件服务器(例如后缀)。
  • 确保sendmail_path指向/usr/sbin/sendmail中的sendmail二进制文件(通常为php.ini)。请注意,在Ubuntu / Debian上,您可能在.ini以及其他位置有多个/etc/php5/mods-available文件。
  • 使用isSendmail()并在PHPMailer($mail->Sendmail = '/usr/sbin/sendmail';)中设置sendmail二进制文件的路径。
  • 使用isSMTP()并直接通过SMTP发送。

这与加载作曲家的自动加载器无关。

答案 1 :(得分:0)

当电子邮件被视为垃圾邮件时,某些托管服务会返回此错误。尝试使用与您的网站具有相同域的电子邮件地址。

答案 2 :(得分:-1)

而不是:require 'C:\xampp\composer\vendor\autoload.php';

尝试:require __DIR__ . '/vendor/autoload.php';

这假设/ vendor是文档根目录的子目录。