麻烦使用PEAR的Mail_Queue

时间:2012-01-16 15:54:58

标签: php mysql pear mail-queue

我正在尝试实现PEAR的Mail_Queue包来为Web应用程序排队一些电子邮件。我已经使用http://pear.php.net/manual/en/package.mail.mail-queue.mail-queue.tutorial.php处的文档编写了一个小测试脚本。

我的问题是数据库没有更新,并且没有产生错误。

修改

// 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);

这会产生错误Mail Queue Error: Cannot connect to database。但是,我检查了所有连接信息,这是正确的。此外,添加if (PEAR::isError($mail)) die($mail->getMessage());不会产生任何错误!

1 个答案:

答案 0 :(得分: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驱动程序。

所以我更新了它们并且它正在工作!