确定。我使用了明显有效的代码(主要答案有136个绿色标记): Send email using the GMail SMTP server from a PHP page
在我的php邮件脚本中,替换了gmail用户并传递了我自己的...起初我得到PEAR的错误,然后找不到PEAR5 ...所以我复制了那两个文件(我从梨网站下载)进入脚本的文件夹......
尽管如此,脚本仍无效。
我添加了一些回声以查看它停止的位置,并且它停在这一行(我认为):
$mail = $smtp->send($to, $headers, $body);
我的apache / php错误日志说明了这个:
PHP致命错误:调用未定义的方法PEAR_Error :: send()`
我已经搜索了这个错误并发现了十几页,但是没有找到一个回复......大多数他们似乎都在谈论“安装梨库”。
我没有尝试在我的本地服务器上安装/配置pear ....因为我不认为我可以在我的webhost上安装新软件包,所以我需要一个更便携的解决方案: 我的意思是这是一个工作脚本,任何相关的类文件,我可以将所有文件复制到一个文件夹,以使其工作.....所以我可以将此文件夹复制到任何apache / php服务器,它将自动工作(通过以html格式重新编写脚本),而无需在服务器上安装/配置某些第三方软件包。
我也尝试过phpmailer,它提出了类似的问题,似乎也需要梨,所以我真的没有看到进一步尝试phpmailer的重点,如果我不能让梨甚至工作。
答案 0 :(得分:1)
PHP致命错误:调用未定义的方法PEAR_Error :: send()
这意味着您没有获得邮件对象而是错误对象,可能是因为登录失败了。将以下内容添加到您的代码中:
$mail = Mail::factory(..);
if (PEAR::isError($mail)) {
echo $mail->getMessage() . "\n" . $mail->getUserInfo() . "\n";
die();
}
$mail->send(...);
顺便说一句,使用$ searchengine查找该错误消息会给你相同的答案。
答案 1 :(得分:1)
正如@cweiske所述,添加他提供的代码会给出详细的错误。在我的情况下,它是
无法找到驱动程序smtp的类
PHP致命错误:调用undefined m ethod PEAR_Error :: send()
所以基本上它试图包含“Mail / smtp.php”并检查Mail_smtp类,但无法找到它。因此,Mail / smtp.php不存在,或包含它没有定义Mail_smtp类。
要解决此问题,您只需从here下载Pear邮件,然后将邮件文件夹复制到您的域中即可。而已。您的代码应该没有任何问题。
答案 2 :(得分:0)
谢谢,这有助于我犯这个错误: 无法找到驱动程序smtp的类
这让我进入了这个页面: http://goonanism.com/blog/2010/06/08/using-pear-to-send-email-via-smtp/
告诉我我需要其他文件。在我添加了它工作的文件之后。
问题解决了。但我认为对于那些想要像我这样的便携式解决方案的人来说,应该更好地记录这些文件的要求:)