phpmailer错误“无法实例化邮件功能”

时间:2009-08-18 23:20:21

标签: php email phpmailer

我使用的mail()基本示例略微修改了我的用户ID,我收到错误“Mailer Error:无法实例化邮件功能”

如果我使用邮件功能 -

mail($to, $subject, $message, $headers);

它工作正常,但我在发送html时遇到问题,这就是为什么我在尝试PHPMailer。

这是代码:

<?php
require_once('../class.phpmailer.php');

    $mail             = new PHPMailer(); // defaults to using php "mail()"
    $body             = file_get_contents('contents.html');
    $body             = eregi_replace("[\]",'',$body);
        print ($body ); // to verify that I got the html
    $mail->AddReplyTo("reply@domain.com","my name");
    $mail->SetFrom('from@domain.com', 'my name');
    $address = "to@domain.com";
    $mail->AddAddress($address, "her name");
    $mail->Subject    = "PHPMailer Test Subject via mail(), basic";
    $mail->AltBody    = "To view the message, please use an HTML compatible email viewer!";
    $mail->MsgHTML($body);
    $mail->AddAttachment("images/phpmailer.gif");      // attachment
    $mail->AddAttachment("images/phpmailer_mini.gif"); // attachment

    if(!$mail->Send()) {
        echo "Mailer Error: " . $mail->ErrorInfo;
    } else {
        echo "Message sent!";
    }
?>

16 个答案:

答案 0 :(得分:26)

尝试使用 SMTP 发送电子邮件: -

$mail->IsSMTP();
$mail->Host = "smtp.example.com";

// optional
// used only when SMTP requires authentication  
$mail->SMTPAuth = true;
$mail->Username = 'smtp_username';
$mail->Password = 'smtp_password';

答案 1 :(得分:11)

$mail->AddAddress($address, "her name");

应改为

$mail->AddAddress($address);

这适用于我的案例..

答案 2 :(得分:10)

您需要确保您的发件人地址是该服务器上的有效电子邮件帐户设置。

答案 3 :(得分:10)

这对我有用

$mail->SetFrom("from@domain.co","my name", 0); //notice the third parameter

答案 4 :(得分:5)

您的代码看起来不错,您是否忘记在服务器上安装PostFix?

sudo apt-get install postfix

它对我有用;)

干杯

答案 5 :(得分:3)

this specific error上的PHPMailer帮助文档帮助我走上了正确的道路。

我们发现php.ini没有定义sendmail_path,所以我用sendmail_path = /usr/sbin/sendmail -t -i;添加了

答案 6 :(得分:1)

在我的情况下似乎只是服务器拒绝。请检查您的邮件服务器日志/ smtp连接可访问性。

答案 7 :(得分:1)

我遇到了这个问题,经过一些调试和搜索后我意识到SERVER(Godaddy)可能有问题。

我建议您与您的网络托管服务提供商联系,并与他们讨论关于邮件功能的 Quota Restrictions (他们这样做是为了防止人们使用垃圾邮件机器人或群发电子邮件(垃圾邮件))。

他们可能会告诉你他们的极限,如果你超过他们。您也可以通过访问私人服务器来升级限制。

在与GoDaddy交谈15分钟后,技术支持人员能够在20分钟内解决此问题。

这对我帮助很大,我想分享它,所以如果其他人遇到这个,他们可以尝试这种方法,如果一切都失败,或者在他们尝试其他任何事情之前。

答案 8 :(得分:1)

就我而言,正是附件大小限制导致了问题。检查并增加对我有用的邮件的大小限制。

答案 9 :(得分:0)

一个老线程,但它可能会帮助像我这样的人。我通过在PHP.ini

中将SMTP服务器值设置为合法值来解决了该问题

答案 10 :(得分:0)

我也有这个问题。我的解决方案是禁用selinux。我尝试在selinux中允许2个不同的http设置(类似于httpd_allow_email和http_can_connect)并且不起作用,所以我完全禁用它并开始工作。

答案 11 :(得分:0)

我在发送名称中包含区域字符的文件时出现此问题,例如:VęryRęgióńął file - name.pdf

解决方法是在将文件名附加到电子邮件之前清除文件名。

答案 12 :(得分:0)

检查sendmail是否已启用,主要是如果您的服务器是由其他公司提供的。

答案 13 :(得分:0)

为了解决这个问题,我不得不进入cPanel并看到错误消息

“注意!请通过cpanel插件注册非smtp邮件中使用的电子邮件ID。通过脚本发送的非smtp电子邮件中将不允许使用未注册的电子邮件ID。转到邮件部分,然后在中找到“已注册的邮件ID”插件纸灯笼主题。”

在cPanel中注册电子邮件(注册邮件ID)并等待10分钟即可开始工作。

希望能帮助某人。

答案 14 :(得分:0)

我的配置:IIS + php7.4

我遇到了与@ Salman-A相同的问题,在该问题中,通过电子邮件发送小附件,但通过大附件导致页面出错。 我增加了php.ini中的文件和附件限制,但这没什么区别。

然后,我在IIS(6.0)中找到一个配置,并在那里增加了文件限制。 iis config image

这也是我的mail.php:

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require '../_PHPMailer-master/src/Exception.php';
require '../_PHPMailer-master/src/PHPMailer.php';

try{
    $email = new PHPMailer(true);
    $email->SetFrom('internal@email.com', 'optional name');
    $email->isHTML(true);
    $email->Subject   = 'my subject';
    $email->Body      = $emailContent;
    $email->AddAddress( $eml_to );  
    $email->AddAttachment( $file_to_attach );
    $email->Send();
  }catch(phpmailerException $e){echo $e->errorMessage();}

我希望这对以后的人有所帮助。

答案 15 :(得分:-1)

我们需要在php.ini文件中更改“SMTP”的值 php.ini文件位于

EasyPHP-DevServer-14.1VC11\binaries\php\php_runningversion\php.ini