0

modMail クラスを使用してカスタム メールを送信しています。MODX サイトのガイドラインに従い、スニペットに配置した次のコードを使用しました。

$message = $modx->getChunk('myEmailTemplate');

$modx->getService('mail', 'mail.modPHPMailer');
$modx->mail->set(modMail::MAIL_BODY,$message);
$modx->mail->set(modMail::MAIL_FROM,'me@example.org');
$modx->mail->set(modMail::MAIL_FROM_NAME,'Johnny Tester');
$modx->mail->set(modMail::MAIL_SUBJECT,'Check out my new email template!');
$modx->mail->address('to','user@example.com');
$modx->mail->address('reply-to','me@xexample.org');
$modx->mail->setHTML(true);
if (!$modx->mail->send()) {
    $modx->log(modX::LOG_LEVEL_ERROR,'An error occurred while trying to send the email: '.$modx->mail->mailer->ErrorInfo);
}
$modx->mail->reset();

カスタム チャンクからのメッセージを含むようにスニペットが変更され、電子メール アドレスが正しいものに置き換えられました。スニペットは電子メールを 1 回送信し、二度と送信しませんでした。メールの送信を妨げるような動作の原因がわかりません。

リセット機能を使用するとメール フィールドがリセットされ、メールを再送信できるようになることを読み$modx->mail->reset();ましたが、ここで問題が発生していると感じています。

スニペットはページ上で uncached と呼ばれます[[!email]]

一度は機能したにもかかわらず、メールが送信されない理由を知っている人はいますか?

4

1 に答える 1

1

チャンクまたはチャンクの処理中にエラーが発生した場合、modx はエラーを記録するポイントに到達することはありません。次のようなものを試してください:

if (!$modx->mail->send()) {
    $modx->log(modX::LOG_LEVEL_ERROR,'An error occurred while trying to send the email: '.$modx->mail->mailer->ErrorInfo);
}else{
 $modx->log(modX::LOG_LEVEL_ERROR,'This mail was sent: '.$message);
}

何かをログに記録するかどうかを確認します。それ以外の場合は、そこにあるものは正確です- $message 変数を取り出して、文字列だけを送信してみてください。一度メールを送信した場合は、何か他のことが間違っているに違いありません。メール サーバーのログ、ヘッダー、スパム [gmail??] などを調べ始めます。

于 2013-02-22T22:48:50.527 に答える