【问题标题】:could not instantiate mail function无法实例化邮件功能
【发布时间】:2011-08-08 20:31:20
【问题描述】:

在这个上扯掉我的头发。

我有一个运行 IIS7.0 和 PHP 5.2.4 的内部 Win2008 服务器。电子邮件服务器位于同一网络上的不同服务器上。

我可以使用 php 的邮件功能毫无问题地发送电子邮件,但是当我使用 PHPMailerLite 时,我收到消息“无法实例化邮件功能”。

我研究了很多并尝试了以下但仍然没有乐趣。

  1. SetFrom - 将其更改为邮件服务器上现有的电子邮件地址。
  2. 已验证 php.ini 中的 SMTP 设置
  3. 直接测试了php的邮件功能,邮件发送没问题。
  4. 再次下载 PHPMailer 以防损坏。

任何帮助将不胜感激.....

艾伦

补充一点,PHPMailer 附带的默认示例也不起作用,同样的错误。 此代码正在其他测试服务器上为我工作。

$mail             = new PHPMailerLite();
$mail->IsMail(); // telling the class to use PHP Mail to send email
$mail->SetFrom("CareSys@localdomain.ie","CareSys");
$mail->AddReplyTo("CareSys@localdomain.ie","CareSys");
$mail->Subject    = "Weekly Planner";
$mail->AltBody    = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test
$mail->MsgHTML($body);
$mail->AddAddress($email_add, $carer_name);
$mail->AddAttachment('../../temp/carer_planner.pdf','carer_planner.pdf');      // attachment
$mail->ConfirmReadingTo = 'info@localdomain.ie';
if(!$mail->Send()) { $error_count=1; }

if ($error_count<1) { echo 'Email Sent Successfully'; }

如果我将收件人地址直接放在第 582 行的类文件中,而不是 $to 变量中,它可以工作。但是即使我将 $email_add 变量替换为收件人地址,也不会使用 $mail->AddAddress($email_add, $carer_name) 。

【问题讨论】:

  • ¿您能在此处粘贴一些使用 PHPMailerLite 的代码吗?
  • 是的,对不起。只是补充一下,我也无法让默认包含的示例正常工作,同样的错误。
  • 第 576-596 行之间大约有四行: $rt = @mail($val, $this->EncodeHeader($this->SecureHeader($this->Subject)), $正文,$标头,$参数);你能把邮件前的@去掉吗,运行程序并报告新的错误。
  • 不知道调试选项可用。现在的错误是 504 错误,地址无效。此错误通常指示初始 HELO 中的地址,但我已在第 152 行将其作为 $hostname 的值输入,但仍然是相同的错误。
  • 抱歉应该补充一下,现在的错误是引用 class.phpmailer-lite 中的第 582 行

标签: php iis-7 phpmailer


【解决方案1】:

该类正在尝试通过“sendmail”程序发送消息,该程序未使用 php 邮件功能。确保您可以通过 exec/system 函数从 PHP 执行程序,并且您可以从 PHP 运行 sendmail 程序。 exec/system/passthru/popen 功能可能被您的服务器管理员禁用,或者您的 php 环境可能被监禁,根本无法访问 sendmail 程序。

【讨论】:

    【解决方案2】:

    尝试使用 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';
    

    【讨论】:

      【解决方案3】:

      这对我有用

      $mail->SetFrom("CareSys@localdomain.ie","CareSys", 0); //notice the third parameter
      

      【讨论】:

        猜你喜欢
        • 2015-01-17
        • 1970-01-01
        • 1970-01-01
        • 2015-08-19
        • 1970-01-01
        • 2017-09-07
        • 1970-01-01
        • 2021-04-26
        • 1970-01-01
        相关资源
        最近更新 更多