Drupal development: Posílání mailů z modulu

Vydáno:

Jiří Kupka

Zapomeňte na posílání e-mailu z vlastního modulu pomocí funkce mail() v php. Často zapomenete na potřebné hlavičky, musíte nastavovat kódování a vůbec se starat o věci, které s prostým posláním textu do schránky nijak nesouvisí. Udělejte to po Drupalovsku. Základní posílání e-mailů v Drupalu se skládá z několika částí. První věc je funkce hook_mail(), ve které si připravte textace a nastavení všech variant e-mailů, které budete chtít modulem odesílat.

function hook_mail($key, &$message, $params) {
	$language = $message['language'];
	$say = $params['say'];
 
	switch ($key) {
		case 'fox':
			$message['subject'] = t("You, stupid fox!");
			$message['body'][] = t("Nobody know, what does the fox say. We just heard some shrieking: ").$text;
			break;
		case 'dog':
			$message['subject'] = t("For my doggy");
			$message['body'][] = t("What does the dog say? ").$say;
			break;
	}
}

Druhou částí je samotné odesílání pomocí funkce drupal_mail(). Ta může vypadat takto:

/**
* @param  string  název modulu
* @param  string  klíč, který se pošle funkci hook_mail
* @param  string  příjemce e-mailu
* @param  string  jazyk
* @param  array   parametry, které se zašlou do hook_mail
*/
drupal_mail('muj_modul', 'fox', 'fox@recipient.cz', $language, $params);
// nebo
drupal_mail('muj_modul', 'dog', 'fox@recipient.cz', $language, $params);

Příjemce e-mailů může být např. i ve tvaru "fox@recipient.cz <Liška>" nebo "fox@recipient.cz, anotherfox@recipient.cz" pro více příjemců. Odesílatele e-mailu je možné zadat jako 6. parametr ve funkci drupal_mail(). Další možností je vložit ji do proměnné $message[&quot;from&quot;] v hook_mail(). Tady je možné nadefinovat i další hlavičky, se kterýma se má má mail poslat