【问题标题】:Trouble using PEAR's Mail_Queue使用 PEAR 的 Mail_Queue 时遇到问题
【发布时间】:2012-02-11 13:04:39
【问题描述】:

我正在尝试实现 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()); 不会产生错误!

【问题讨论】:

  • 看起来不错。您能检查 Mail_Queue 创建 if (PEAR::isError($mail)) die($mail->getMessage()); 的返回值以及您的 put 调用的返回值吗?
  • 我试过了,但没有任何反应
  • 在内部,Mail_Queue 使用 MDB2 连接到数据库。您是否尝试过使用它进行连接,作为故障排除措施?
  • 可能会发布pear list 的输出并检查DSN 中使用的数据库类型(mysql?)
  • pear list 说:Archive_Tar、Console_Getopt、DB、MDB、MDB2、Mail、Mail_Mime、Mail_Queue、Net_SMTP、Net_Socket、PEAR、Structures_Graph、XML_Parser、XML_Util 都是稳定的

标签: php mysql pear mail-queue


【解决方案1】:

好的,我的邮件队列文件终于可以使用了。以下是我为使其发挥作用所采取的步骤:

1.启用错误消息

为了启用错误处理,我添加了这个 sn-p:

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 驱动程序造成的。

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

【讨论】:

  • 你能告诉我,你安装了哪些版本?
  • 太久了,我已经无法访问那个服务器了!对不起,我忘记了
猜你喜欢
  • 2020-01-08
  • 1970-01-01
  • 2011-04-10
  • 2011-07-02
  • 2010-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-21
相关资源
最近更新 更多