【问题标题】:Could not instantiate mail function: A PHPMailer Error无法实例化邮件函数:PHPMailer 错误
【发布时间】:2019-03-30 01:04:09
【问题描述】:

我正在尝试创建一个联系表单。我在网上搜索了如何发送电子邮件,他们总是说使用 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"
}
}

【问题讨论】:

    标签: php email phpmailer


    【解决方案1】:

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

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

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

    这与你如何加载 composer 的自动加载器无关。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        代替:require 'C:\xampp\composer\vendor\autoload.php';

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

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

        【讨论】:

        • 我试过这样做,但它给了我错误:require(C:\xampp\htdocs\GGA/vendor/autoload.php): failed to open stream: No such file or directory and require( ): 打开失败需要'C:\xampp\htdocs\GGA/vendor/autoload.php' (include_path='C:\xampp\php\PEAR')
        • 错误是什么?另外,请发布您的 composer.json 文件的内容。
        • composer.json - { "require": { "phpmailer/phpmailer": "^6.0" } }
        • 我认为这里的问题可能是您没有发出命令: composer require phpmailer/phpmailer 从命令行,这需要(通常)从您的 web 目录的根目录完成。
        • 我做到了。我使用 cmd 执行 composer require phpmailer/phpmailer。图片:i.imgur.com/9xG8esD.png。我应该重新开始安装作曲家吗?但是不知道怎么卸载...
        猜你喜欢
        • 1970-01-01
        • 2015-08-19
        • 2019-07-24
        • 1970-01-01
        • 1970-01-01
        • 2015-01-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多