Probleme bei der Verwendung von PEARs Mail_Queue
-
29-10-2019 - |
Frage
Ich versuche, das Mail_Queue-Paket von PEAR zu implementieren, um einige E-Mails für eine Webanwendung in die Warteschlange zu stellen.Ich habe die Dokumentation unter verwendet http://pear.php.net/manual/en/package.mail.mail-queue.mail-queue.tutorial.php ein kleines Testskript schreiben.
Mein Problem ist, dass die Datenbank nicht aktualisiert wird und keine Fehler erzeugt.
BEARBEITEN
// mail_queue db options
$db_options['type'] = 'mdb2';
$db_options['dsn'] = DSN;
$db_options['mail_table'] = 'mail_queue';
// mail_queue sending options
$mail_options['driver'] = 'smtp';
$mail_options['host'] = 'smtp.gmail.com';
$mail_options['port'] = 25;
$mail_options['localhost'] = $host;
$mail_options['auth'] = true;
$mail_options['user'] = MAILUSER;
$mail_options['pass'] = MAILPASS;
require "Queue.php";
$mail_queue =& new Mail_Queue($db_options,$mail_options);
$from = 'someone@domain.ca';
$to = 'martin@starmedia.ca';
$message = 'This is a test';
$headers = array('From' => $from,
'To' => $to,
'Subject' => 'Someone has sent you an email!');
$mime =& new Mail_mime();
$mime->setTXTBody($message);
$body = $mime->get();
$headers = $mime->headers($headers,true);
print $mail_queue->put($from,$to,$headers,$body);
Dadurch entsteht der Fehler Mail Queue Error: Cannot connect to database
.Ich habe jedoch alle Verbindungsinformationen überprüft und sie sind korrekt.Außerdem hinzufügen if (PEAR::isError($mail)) die($mail->getMessage());
erzeugt keine Fehler!
Lösung
OK, ich habe endlich meine Mail-Warteschlangendatei.Hier sind die Schritte, die ich unternommen habe, um es zum Laufen zu bringen:
1.Aktivieren Sie Fehlermeldungen
Um die Fehlerbehandlung zu aktivieren, habe ich dieses Snippet hinzugefügt:
function handle_pear_error($e) {
die($e->getMessage() . ' ' . print_r($e->getUserInfo(), true));
}
PEAR::setErrorHandling(PEAR_ERROR_CALLBACK, 'handle_pear_error');
Nachdem ich dies hinzugefügt habe, habe ich die Seite neu geladen und die folgende Fehlermeldung erhalten:
Call to undefined function: MDB2_Driver_mysql::_isNewLinkSet()
2.Aktualisieren Sie den MySQL-Treiber von MDB2
Ich habe diesen Fehler durchsucht und festgestellt, dass er normalerweise darauf zurückzuführen ist, dass entweder keine aktuelle MDB2-Bibliothek oder der MySQL-Treiber vorhanden ist.
Also habe ich beide aktualisiert und es funktioniert!