Я хотел бы использовать систему электронной почты Drupal, чтобы программно отправлять электронную почту из моего пользовательского модуля. Это возможно?
С помощью hook_mail и drupal_mail вы можете создавать и отправлять электронную почту.
Реализуйте использование электронной почты hook_mail:
function MODULENAME_mail ($key,&$message, $params){switch($key){case'mymail':// Set headers etc
$message['to']='foo@bar.com';
$message['subject']= t('Hello');
$message['body'][]= t('Hello @username,', array('@username'=> $params['username']));
$message['body'][]= t('The main part of the message.');break;}}
Он прав, но, чтобы уточнить немного, hook_mail предоставляет вам способ структурировать и оформить электронную почту на основе произвольного ключа, который вы определяете. drupal_mail () - это то, что вы звоните, чтобы отправить электронное письмо. Передайте ключ для структуры, которую вы хотите использовать. (и модуль, который отвечает на этот ключ)
Джейсон Смит
9
В этом примере $message['to']это жестко запрограммировано foo@bar.com. Откажитесь от этого, и сообщение будет отправлено получателю, указанному при drupal_mail()вызове.
pfrenssen
12
Если вы хотите более простой способ отправки электронной почты, ознакомьтесь с Simple Mail ; это модуль, над которым я работаю, чтобы сделать отправку электронной почты с помощью Drupal 7+ намного проще, и он не требует каких-либо дополнительных реализаций хуков или знаний MailSystem. Отправить электронное письмо так же просто, как:
Вы можете использовать этот код в зависимости от вашего выбора в вашем пользовательском модуле:
function yourmodulename_mail($from ='default_from', $to, $subject, $message){
$my_module ='yourmodulename';
$my_mail_token = microtime();if($from =='default_from'){// Change this to your own default 'from' email address.
$from = variable_get('system_mail','admin@yoursite.com');}
$message = array('id'=> $my_module .'_'. $my_mail_token,'to'=> $to,'subject'=> $subject,'body'=> array($message),'headers'=> array('From'=> $from,'Sender'=> $from,'Return-Path'=> $from,),);
$system = drupal_mail_system($my_module, $my_mail_token);
$message = $system->format($message);if($system->mail($message)){return TRUE;}else{return FALSE;}}
Затем вы можете использовать вышеуказанную функцию следующим образом:
$user = user_load($userid);// load a user using its uid
$usermail =(string) $user->mail;// load user email to send a mail to it OR you can specify an email here to which the email will be sent
customdraw_mail('default_from', $usermail,'You Have Won a Draw -- this is the subject','Congrats! You have won a draw --this is the body');
Ответы:
С помощью hook_mail и drupal_mail вы можете создавать и отправлять электронную почту.
Реализуйте использование электронной почты hook_mail:
Чтобы отправить письмо, используйте drupal_mail:
Очевидно, замените параметры: $ ключ должен равняться 'mymail'
Электронное письмо отправляется в несколько шагов:
источник
$message['to']
это жестко запрограммированоfoo@bar.com
. Откажитесь от этого, и сообщение будет отправлено получателю, указанному приdrupal_mail()
вызове.Если вы хотите более простой способ отправки электронной почты, ознакомьтесь с Simple Mail ; это модуль, над которым я работаю, чтобы сделать отправку электронной почты с помощью Drupal 7+ намного проще, и он не требует каких-либо дополнительных реализаций хуков или знаний MailSystem. Отправить электронное письмо так же просто, как:
источник
Вы можете использовать более простой способ отправки электронной почты, проверить почтовую систему ; это модуль.
источник
Вы можете использовать этот код в зависимости от вашего выбора в вашем пользовательском модуле:
Затем вы можете использовать вышеуказанную функцию следующим образом:
источник