web-dev-qa-db-ja.com

送信メールの内容を検査する方法は?

私のサイトから電子メールを送信するいくつかのモジュールがあります:ルール、トリガー、ユーザー、...

drupal_set_message()を設定してメールの内容を印刷する場所を探しています。コードのどこがそのための最良の場所でしょうか?

2
Capi Etheriel

hook_mail_alter() を使用して、電子メールメッセージが送信される前にその内容を取得(および変更)できます。

function mymodule_mail_alter(&$message) {
  dpm($message);
}

覚えておくべきことの1つは、さまざまな理由で、すべてのモジュールがdrupal_mail()を呼び出す関数 hook_mail_alter() を使用するわけではないということです。その場合、モジュールのコードのどこにメールが送信されるかを特定し、それらが独自の変更フックを提供するかどうかを確認する必要があります。関数drupal_alter('foo')hook_foo_alter()を介して実装)を探します。 、module_implements('foo')module_invoke('foo')、またはmodule_invoke_all('foo')(すべてhook_foo()によって実装されます)。

それができない場合は、一時的にdpm()呼び出しをモジュールの適切な場所に直接追加する必要があります。

7
user7