【问题标题】:pear mail error梨邮件错误
【发布时间】:2013-03-13 23:26:25
【问题描述】:

好的。我使用了明显有效的代码(带有 136 个绿色刻度的主要最佳答案): Send email using the GMail SMTP server from a PHP page

在我的 php 邮件脚本中,替换 gmail 用户并用我自己的传递...起初我收到 PEAR 错误,然后找不到 PEAR5...所以我复制了这两个文件(我从 pear 站点下载) 进入脚本的文件夹...

仍然,脚本没有工作。

我添加了一些回声来查看它停止的位置,它停止在这一行(我认为):

$mail = $smtp->send($to, $headers, $body);

我的 apache/php 错误日志是这样写的:

PHP 致命错误:调用未定义的方法 PEAR_Error::send()`

我用谷歌搜索了这个错误,发现了十多页,但没有找到答案……他们似乎在说“安装 pear 库”。

我没有尝试在我的本地服务器上安装/配置 pear.... 因为我认为我不能在我的虚拟主机上安装新软件包,所以我需要一个更便携的解决方案: 我的意思是这是一个工作脚本,我可以将任何相关的类文件全部复制到一个文件夹中以使其工作.....所以我可以将此文件夹复制到任何 apache/php 服务器,它会自动工作(通过引用html形式的脚本),无需在服务器上安装/配置一些第三方包。

我也尝试了 phpmailer,它给出了类似的问题,而且它似乎也需要 pear,所以如果我什至无法让 pear 工作,我真的看不出进一步试验 phpmailer 的意义。

【问题讨论】:

    标签: php email smtp pear


    【解决方案1】:

    PHP 致命错误:调用未定义的方法 PEAR_Error::send()

    这意味着你没有得到一个邮件对象,而是一个错误对象,可能是因为登录失败左右。将以下内容添加到您的代码中:

    $mail = Mail::factory(..);
    if (PEAR::isError($mail)) {
        echo $mail->getMessage() . "\n" . $mail->getUserInfo() . "\n";
        die();
    }
    $mail->send(...);
    

    顺便说一句,使用 $searchengine 来查找该错误消息会得到相同的答案。

    【讨论】:

    • iv 现在一切正常,谢谢。不过我还有一个问题。发送的邮件是否应该出现在 gmail 帐户或您使用 smtp/php 脚本连接的任何帐户的发送框中?该帐户已成功将联系表发送到我的其他收件箱...但我在已发送的框中看不到任何内容
    • 没有。通过 SMTP 发送邮件与将邮件存储在您的邮件帐户的文件夹中无关。大多数电子邮件客户端两者都做:发送邮件并将其副本存储在您的邮箱中。如果您想保留它,您需要通过 IMAP 将邮件存储在您的已发送文件夹中。
    【解决方案2】:

    正如@cweiske 所说,添加他提供的代码将给出详细的错误。在我的情况下,它是

    Unable to find class for driver smtp

    PHP Fatal error: Call to undefined m 方法 PEAR_Error::send()

    所以基本上它试图包含“Mail/smtp.php”并检查 Mail_smtp 类,但无法找到它。所以要么 Mail/smtp.php 不存在,要么包含它没有定义 Mail_smtp 类。

    要解决此问题,您只需从here 下载 Pear 邮件并将邮件文件夹复制到您的域。而已。您的代码应该可以正常工作。

    【讨论】:

      【解决方案3】:

      感谢您帮助我发现了这个错误: 找不到驱动程序 smtp 的类

      这导致我进入此页面: http://goonanism.com/blog/2010/06/08/using-pear-to-send-email-via-smtp/

      这告诉我我需要其他文件。添加文件后它就可以工作了。

      问题已解决。但我认为对于像我这样想要便携式解决方案的人来说,应该更好地记录这些文件的要求:)

      【讨论】:

      • 这些要求记录在 package.xml 中,并在使用 pear 安装程序安装 pear 包时自动解决。 pear 下载页面明确告诉您使用安装程序,并且只有在您真正知道自己在做什么时才进行手动安装。
      • 是的,我注意到一些安装程序的东西。我没有这样做的原因是因为我无法在我的虚拟主机上安装新东西,所以我想要一个可以在本地服务器和任何支持 php 的虚拟主机上使用的便携式解决方案
      猜你喜欢
      • 2013-12-02
      • 2023-03-04
      • 2014-02-21
      • 2011-10-21
      • 2015-11-20
      • 2013-10-27
      • 2013-10-05
      • 1970-01-01
      • 2011-10-03
      相关资源
      最近更新 更多