2012-01-16 2 views
1

Я пытаюсь реализовать пакет Mail_Queue PEAR для очереди на некоторые электронные письма для веб-приложения. Я использовал документацию по адресу http://pear.php.net/manual/en/package.mail.mail-queue.mail-queue.tutorial.php, чтобы написать небольшой тестовый скрипт.Проблема с использованием Mail_Queue PEAR

Моя проблема заключается в том, что база данных не обновляется, и она не создает ошибок.

EDIT

// 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 = '[email protected]'; 
$to = '[email protected]'; 
$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); 

Это дает ошибку Mail Queue Error: Cannot connect to database. Однако я проверил всю информацию о подключении, и это правильно. Кроме того, добавление if (PEAR::isError($mail)) die($mail->getMessage()); не вызывает ошибок!

+0

Выглядит правильно. Вы можете проверить возвращаемое значение создания Mail_Queue 'if (PEAR :: isError ($ mail)) die ($ mail-> getMessage());' а также возвращаемое значение вашего 'put' вызова? – DerVO

+0

Я пробовал это, но ничего не происходит – Martin

+0

Внутренне Mail_Queue использует MDB2 для подключения к базе данных. Вы пытались использовать его для подключения, как меру устранения неполадок? – Charles

ответ

0

ОК, у меня наконец-то работает файл очереди сообщений. Вот шаги, которые я взял, чтобы заставить его работать:

1. Включить сообщения об ошибках

Чтобы включить обработку ошибок, я добавил этот фрагмент:

function handle_pear_error($e) { 
    die($e->getMessage() . ' ' . print_r($e->getUserInfo(), true)); 
} 
PEAR::setErrorHandling(PEAR_ERROR_CALLBACK, 'handle_pear_error'); 

После того, как я добавил это, я перезарядил страницу, и я получаю следующее сообщение об ошибке:

Call to undefined function: MDB2_Driver_mysql::_isNewLinkSet() 

2. Обновление драйвера MDB2 в MySQL

Я искал эту ошибку и обнаружил, что она обычно является результатом либо отсутствия современной библиотеки MDB2, либо ее драйвера MySQL.

Так что я обновил оба, и он работает!

+0

Не могли бы вы рассказать мне, какие версии вы установили? – aga

+0

Это было слишком долго, и у меня больше нет доступа к этому серверу! Извините, но я забыл – Martin

Смежные вопросы