Search code examples
phpemailsmtppear

pear mail error


Ok. I have used the apparently working code(the main top answer with 136 green ticks): Send email using the GMail SMTP server from a PHP page

in my php mail script, replacing the gmail user and pass with my own... at first I got errors that PEAR, then PEAR5 could not be found... so I copied those 2 files(I downloaded from pear site) into the script's folder...

Still, script didn't work.

I added some echoes to see where it halts, and it halts at this line(I think):

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

My apache/php error log says this:

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

I have googled this error and found over a dozen pages but havn't found an anwser... mostly they seem to say something about "installing pear libraries."

I have not tried installing/configuring pear on my local server.... because I do not think I can install new packages on my webhost, so I need a more portable solution: What I mean by this is a working script, and any relative class files I can just copy all into one folder to get it working..... so I can just copy this folder to any apache/php server and it will automatically work(by refrencing the script in html form), without having to install/configure some third party package on the server.

I also tried phpmailer which gave similar problems and it seems to also require pear so I don't really see the point of experimenting with phpmailer further if I cannot get pear to even work.


Solution

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

    This means you didn't get a mail object but an error object, probably because logging in failed or so. Add the following to your code:

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

    Btw, using $searchengine to look for that error message would have given you the same answer.