Как отправлять электронные письма из пользовательского кода PHP? - PullRequest
9 голосов
/ 14 июля 2010

Мне нужно отправить электронное письмо с моего пользовательского php-кода, используя сервис Drupal.

Другими словами, я заметил, что Drupal может легко отправлять электронные письма, поэтому я хотел бы знать, как я могу использовать библиотеки drupal для отправки электронных писем вместо использования внешних библиотек.

Ответы [ 3 ]

8 голосов
/ 14 июля 2010

Вам необходимо использовать drupal_mail () и определить hook_mail () в вашем модуле.

Затем вы позвоните первому, а информация электронной почты будет установлена ​​вторым. (См. Пример на странице документации для drupal_mail().)

7 голосов
/ 15 июля 2010
$message = array(
  'to' => 'example@mailinator.com',
  'subject' => t('Example subject'),
  'body' => t('Example body'),
  'headers' => array('From' => 'example@mailinator.com'),
);

drupal_mail_send($message);

Предостережения:

  • Поскольку drupal_mail() не вызывается, другие модули не смогут hook_mail_alter() выдать ваши данные, что может привести к неожиданным результатам.
  • drupal_mail_send() не знает, на каком языке отправлять сообщение, поэтому это нужно выяснить заранее.
  • Вам придется вручную указать любые другие требуемые заголовки электронной почты ('Content-Типа и т. Д.).Об этом обычно заботятся drupal_mail().В случае, когда ваш модуль отправляет несколько различных типов электронных писем, и вы хотите, чтобы эти шаблоны писем были редактируемыми (например, различные уведомления о регистрации пользовательского модуля / сброс пароля / т. Д. Электронные письма), использование hook_mail() все еще является лучшимпуть.

Это то, что сообщается в комментарии в документации для drupal_mail () .Если предостережения не важны в вашем случае, вы можете использовать приведенный фрагмент кода.

4 голосов
/ 15 июля 2010

Я бы порекомендовал использовать mimemail. Это модуль Contribute, который позволит вам с легкостью отправлять письма в формате HTML (+ вложения) или сообщения только в виде открытого текста. Вот выдержка из файла readme:

функция mimemail ():

  • $ sender - объект пользователя или адрес электронной почты
  • $ получатель - объект пользователя или адрес электронной почты
  • $ тема - строка темы
  • $ body - основной текст в формате html
  • $ plaintext - логическое значение, отправлять ли сообщения только в виде открытого текста (по умолчанию false)

Этот модуль создает пользовательские настройки для получения сообщений только в виде текста. Это предпочтение будет учитываться всеми вызовами mimemail ()

Ссылка: http://drupal.org/project/mimemail

Надеюсь, это вам поможет!

...