使用 PEAR 邮件发送测试消息时出现错误消息

Posted

技术标签:

【中文标题】使用 PEAR 邮件发送测试消息时出现错误消息【英文标题】:Error message on sending test message with PEAR mail 【发布时间】:2012-07-22 07:48:09 【问题描述】:

我已经安装了最新版本的 PEAR Mail 和 Mail_Mime,我正在尝试使用来自 this page 的以下测试电子邮件发送测试消息,即

<?
        include('/home/****/php/Mail.php');
        include('/home/****/php/Mail/mime.php');

        // Constructing the email
        $sender = "**** <info@****.com>";                              // Your name and email address
        $recipient = "**** <****@gmail.com>";                           // The Recipients name and email address
        $subject = "Test Email";                                            // Subject for the email
        $text = 'This is a text message.';                                  // Text version of the email
        $html = '<html><body><p>This is a html message</p></body></html>';  // HTML version of the email
        $crlf = "\n";
        $headers = array(
                        'From'          => $sender,
                        'Return-Path'   => $sender,
                        'Subject'       => $subject
                        );

        // Creating the Mime message
        $mime = new Mail_mime($crlf);

        // Setting the body of the email
        $mime->setTXTBody($text);
        $mime->setHTMLBody($html);

        $body = $mime->get();
        $headers = $mime->headers($headers);

        // Sending the email
        $mail =& Mail::factory('mail');
        $mail->send($recipient, $headers, $body);
?>

消息没有被发送。检查我的错误日志:

[24-Jul-2012 02:14:50] PHP 致命错误:调用未定义的方法 Mail_mimePart::encodeHeader() 在 /home/**/php/Mail/mime.php 上 第 1330 行

我想知道是否有人知道此错误消息与什么相关以及可以做些什么? mime.php 中的第 1330 行是该函数的第 4 行:

function encodeHeader($name, $value, $charset, $encoding)
    
        $mime_part = new Mail_mimePart;
        return $mime_part->encodeHeader(
            $name, $value, $charset, $encoding, $this->_build_params['eol']
        );
    

【问题讨论】:

不应该被静态调用。你确定这是正确的文件吗,有一个带有“return Mail_mimePart::encodeHeader(”的版本,但这不是你显示的内容。 您是如何安装 Mail 和 Mail_mime 的?您应该可以使用:include_once("Mail/mime.php"); 来调用它。 pear install Mailpear install Mail_mime 应该是您安装它们的方式。 它们是使用 cPanel 安装的。 @David 使用include_once("Mail/mime.php"); 解决了这个问题,所以如果您想将其添加为答案,我可以将其标记为正确。谢谢。 【参考方案1】:
include_once("Mail/mime.php");

应该是你的包括。

【讨论】:

以上是关于使用 PEAR 邮件发送测试消息时出现错误消息的主要内容,如果未能解决你的问题,请参考以下文章

使用 PHP 发送 zip 文件时出现空消息

提交时出现 SMTP 邮件服务器 (sendgrid) 错误

发送电子邮件时 PEAR 邮件身份验证失败

使用 Devise 发送 PostMark 邮件时出现 SSL 错误

使用 Gmail API 发送大型附件时出现错误 10053

使用 smtp 和 Python 发送电子邮件时出现 SSL 错误