3

好的。我使用了明显有效的代码(带有 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.... 因为我认为我不能在我的虚拟主机上安装新包,所以我需要一个更便携的解决方案:我的意思是这是一个工作脚本,以及任何相对类文件我可以将所有文件复制到一个文件夹中以使其正常工作.....所以我可以将此文件夹复制到任何 apache/php 服务器,它会自动工作(通过以 html 形式引用脚本),而无需在服务器上安装/配置一些第三方包。

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

4

3 回答 3

2

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

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

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

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

于 2013-03-14T09:25:00.603 回答
1

正如@cweiske 所说,添加他提供的代码将给出详细的错误。就我而言,它是

找不到驱动程序 smtp 的类

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

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

要解决这个问题,您需要做的就是从这里下载 Pear 邮件并将邮件文件夹复制到您的域中。而已。您的代码应该可以正常工作。

于 2014-09-08T00:25:55.523 回答
0

感谢这让我遇到了这个错误:无法找到驱动程序 smtp 的类

这将我带到了这个页面: http: //goonanism.com/blog/2010/06/08/using-pear-to-send-email-via-smtp/

这告诉我我需要其他文件。在我添加了它工作的文件之后。

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

于 2013-03-14T14:46:12.187 回答