Аватар пользователя Dima

Программно отправить почту на Drupal 7

Система отправки почты в Drupal 7 изменилась, теперь для программной отправки писем нужно использовать функцию drupal_mail_system(), которая возвращает объект, который позволяет форматировать и отправлять почту с сайта.

  1. $my_module = 'popupregistration';
  2. $my_mail_token = 'popupregistration activation mail';
  3. $from = variable_get('system_mail', '');
  4. $message = array(
  5. 'id' => $my_module . '_' . $my_mail_token,
  6. 'to' => $user->mail,
  7. 'subject' => variable_get('site_name', '').' - account activation',
  8. 'body' => array('Dear '.$user->name.', to activate your account click on the link below: ', $activation_link),
  9. 'headers' => array(
  10. 'From' => $from,
  11. 'Sender' => $from,
  12. 'Return-Path' => $from,
  13. ),
  14. );
  15. $system = drupal_mail_system($my_module, $my_mail_token);
  16.  
  17. // The format function must be called before calling the mail function.
  18. $message = $system->format($message);
  19.  
  20. if ($system->mail($message)) {
  21. drupal_set_message(t('Activation mail send.'));
  22. }
  23. else {
  24. drupal_set_message(t('Failed to send email, try again later or contact the site administration.'), 'error');
  25. watchdog('popupregistration', 'Failed to send email %mail ', array('%mail' => $user->mail), WATCHDOG_ERROR);
  26. }