メール送信は、サードパーティのモジュールの奥深くで開始されます。介入する必要があり、環境変数によっては、それを通過させるか、防止する場合があります。それ、どうやったら出来るの?
$message['to']
を+
に設定する奇妙なテクニックを実際に見たことがあります(ちなみに、この背後にあるロジックは何ですか?)。ただし、これによりサーバーログにエラーが発生します。
何か案は?
hook_mail_alter()
のドキュメントで報告されているように、_$message['send']
_をFALSE
に設定すると、メッセージが送信されないようにすることができます。
パラメーター
_
$message
_:メッセージデータを含む配列。この配列のキーは次のとおりです。
- 'id':メッセージの
drupal_mail()
id。モジュールのソースコードまたはdrupal_mail()
で可能なID値を確認してください。- 'to':メッセージの送信先の1つまたは複数のアドレス。この文字列のフォーマットは、PHP電子メール検証フィルターで検証されます。
- 'from':メッセージの送信元としてマークされるアドレス。カスタムアドレスまたはサイト全体のデフォルトの電子メールアドレスのいずれかです。
- 'subject':送信するメールの件名。これには改行文字を含めることはできません。含まない場合、電子メールが正しく送信されない可能性があります。
- 'body':メッセージテキストを含む文字列の配列。メッセージ本文は、「\ n\n」を区切り文字として使用して、個々の配列文字列を単一のテキスト文字列に連結することによって作成されます。
- 'headers':From、Sender、MIME-Version、Content-Typeなどのメールヘッダーを含む連想配列。
- 'params':
drupal_mail()
が呼び出される前にメッセージを作成するために使用される、hook_mail_alter()
の呼び出し元によって提供されるオプションのパラメーターの配列。- 'language':
hook_mail_alter()
が呼び出される前にメッセージを作成するために使用される言語オブジェクト。- 'send':この電子メールメッセージの送信を中止するには、
FALSE
に設定します。
少なくとも、コードは、モジュールの短い名前とモジュールからのメッセージに割り当てられたキーを連結した_$message['id']
_の値をチェックする必要があります。
_function mymodule_mail_alter(&$message) {
if ($message['id'] == 'modulename_messagekey') {
// Verify other conditions are true.
$message['send'] = FALSE;
}
}
_
これはあなたが必要とすることをするはずです:
function hook_mail_alter(&$message){
// Some logic here to test if you want to abort the mail
$message['send'] = false;
}