Cosa c'è di sbagliato in questo script PHP per submit posta usando Pear Mail?

Ho questo script:

require_once "Mail.php"; $from = "Stephen <[email protected]>";//Google apps domain $to = "[email protected]"; $subject = "Hi!"; $body = "Hi,\n\nHow are you?"; $host = "mail.nvrforget.com"; $username = "[email protected]"; $password = "password"; $headers = arrays ('From' => $from, 'To' => $to, 'Subject' => $subject); $smtp = Mail::factory('smtp', arrays ('host' => $host, 'auth' => true, 'username' => $username, 'password' => $password)); $mail = $smtp->send($to, $headers, $body); if (PEAR::isError($mail)) { echo("<p>" . $mail->getMessage() . "</p>"); } else { echo("<p>Message successfully sent!</p>"); } 

Sto arrivando con questo errore:

 Non-static method Mail::factory() should not be called statically 

Qualche idea su come risolvere questo problema? Pear Mail è installato sul server.

Metodo non statico Mail :: factory () non dovrebbe essere chiamato staticamente

Questo è un avviso non fatale proveniente da PHP perché PEAR Mail è preistorico e non è stato aggiornato per utilizzare la parola chiave static introdotta cinque anni fa in PHP5.

Dopo aver esaminato la documentazione , la chiamata a Mail::factory sembra completamente corretta e normale.

Non sei riuscito a dirci se la chiamata per send esito positivo o fallisce. Se ha esito positivo, ma la posta non viene mai consegnata, controlla i log del server SMTP. Se non funziona, qual è il messaggio di errore effettivo? La documentazione di Mail::send include un elenco completo di errori.

Potresti prendere in considerazione l'utilizzo di una posta più moderna che invia una libreria, come Swiftmailer .

forse ha a che fare con una e commerciale?

Noto negli esempi di documentazione, l'utilizzo della fabbrica è simile a questo:

 // Create the mail object using the Mail::factory method $mail_object =& Mail::factory('sendmail', $params); 

Annota l'asserzione usando = &

anteposto un @ a tutte le chiamate pera / posta. a volte potresti finire con Mail :: factory () non dovrebbe essere chiamato errore statico