Разработчики решили в drupal 7 по умолчанию сделать отправку писем в формате plain text. Довольно неожиданный ход. Фактически, когда вы вызываете drupal_mail, на последнем этапе вызывается функция форматирования письма и там уже удаляются все html теги.
Функция эта принадлежит одному из классов ядра Drupal, а именно — MailSystemInterface. Чтобы нам добиться желаемого результата, т.е. отправить письмо в нужном нам формате с HTML тегами, придется расширить этот класс, а потом объявить друпалу, что мы хотим использовать именно его в нашем случае.
Как это сделать обсуждается здесь — http://drupal.org/node/900794.
А также это описано у меня в блоге + отправка письма с вложением.
Кроме того, нужно не забыть поправить заголовок письма, чтобы почтовые программы тоже понимали, что от них хотят. Т.е в ваш hook_mail добавить строку вида:
1 2 3 4 5 6 |
function myModule_mail($key, &$message, $params) { ... //поправим Content-Type по умолчанию содержащий - text/plain; charset=UTF-8; format=flowed; delsp=yes $message['headers']['Content-Type'] = 'text/html; charset=UTF-8; format=flowed; delsp=yes'; ... } |