1

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());してもエラーは発生しません。

4

1 に答える 1

0

OK、ようやくメール キュー ファイルが機能するようになりました。機能させるために私が取った手順は次のとおりです。

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 ドライバーがないことが原因であることがわかりました。

だから私は両方を更新しました、そしてそれは働いています!

于 2012-01-20T17:54:20.817 に答える