2013-03-13 60 views
3

好的。我已经使用了明显的工作代码(与136只绿色蜱主要顶部的答案): Send email using the GMail SMTP server from a PHP page梨邮件错误

在我的PHP脚本的邮件

,免去用户的Gmail和我自己的......经过起初我得到的错误,梨,然后PEAR5找不到...所以我复制这2个文件(我从梨网站下载)到脚本的文件夹...

仍然,脚本没有工作。

我增加了一些回声,看看它停止,并停止在该行(我认为):

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

我的Apache/PHP的错误日志中这样说:

PHP Fatal error: Call to undefined method PEAR_Error::send()`

我有用google搜索这个错误,发现有十几页但没有找到anwser ......大多数人似乎都在说“安装pear libraries”。

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

我也试过phpmailer,它给出了类似的问题,它似乎也需要梨,所以我真的没有真正看到用phpmailer进一步试验,如果我不能让梨甚至工作的点。

回答

1

PHP Fatal error: Call to undefined method PEAR_Error::send()

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

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

顺便说一句,使用$的搜索引擎来寻找那些错误信息会给予你同样的答案。

+0

四,现在感谢所有工作。我还有另一个问题。发送的邮件是否应该出现在gmail帐户的发件箱中,或者您使用smtp/php脚本连接到的任何帐户?联系表格正在通过该帐户成功发送到我的其他收件箱......但我无法看到发送的邮箱中的任何内容 – droidtech 2013-03-16 21:31:08

+0

编号通过SMTP发送邮件与将邮件存储在邮件帐户的文件夹中无关。大多数电子邮件客户端都会这样做:发送邮件并将其副本存储在您的邮箱中。如果您想保留它,则需要通过IMAP将邮件存储在发送的文件夹中。 – cweiske 2013-03-17 13:47:15

0

感谢,帮助使我这个错误: 无法找到类驱动程序SMTP

这使我这个网页: http://goonanism.com/blog/2010/06/08/using-pear-to-send-email-via-smtp/

它告诉我,我需要更多的文件。我添加了它的工作文件后。

问题已解决。但我认为这些文件的需求应该更好地记录下来,以供那些希望像我一样的便携式解决方案的人:) :)

+0

这些要求记录在package.xml中,并且在使用pear安装程序安装pear包时自动*解析。如果你真的知道你在做什么,pear下载页面明确告诉你使用安装程序,并且只做手动安装。 – cweiske 2013-03-14 14:55:28

+0

是的,我注意到一些安装程序的东西。之所以我没有这样做是因为我无法在我的网络主机上安装新的东西,所以我想要一个便携式解决方案,我可以在我的本地服务器和任何支持PHP的网页主机上轻松使用 – droidtech 2013-03-14 16:30:09

1

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

无法找到司机SMTP

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

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

要解决此问题,只需从here下载梨邮件并将邮件文件夹复制到您的域。而已。你的代码应该没有任何问题。