Я создаю простой модуль, который будет отправлять пользователям электронные письма в формате HTML для сделок на нашем веб-сайте.
Я много искал, но не могу найти правильного решения для Drupal. Теперь я могу отправлять письма, но текстовые сообщения.
Что такое пошаговая процедура для отправки электронных писем в формате HTML в Drupal 7?
function example_form_submit( $form,&$form_state) {
$friend_email=$form_state['values']['friend_email'];
$mailto =$friend_email; //gift to a friend
$mailfrom ='no-reply@example.com';
$subject = "another message for HTML email from example.com";
$body="<h2 style='font-size:28px;color:red;'>Hello EMAIL, i here i want to be <b>bolded</b></h2>";
if (drupal_mail('example', 'send_gift', $mailto, language_default(),$params,$mailfrom,TRUE)) {
drupal_set_message(t('Your gift was sent successfully!!!'));
}
else {
drupal_set_message(t('<font color="red">Error occured while sending your mail!!!</font>'));
}
/****hook_mail*/
function example_mail($key,&$message,$params) {
$language = $message['language'];
switch ($key) {
case 'send_gift':
$message['subject']=t($params['subject'], $var, $language->language);
$message['body'][]=$params['body'];
$message['headers']['Content-Type'] = 'text/html; charset=UTF-8; format=flowed';
break;
}
}
Ответы:
Как упоминалось в geoff, одним из вариантов будет использование модуля Mime Mail, но вы также можете разрешить своему пользовательскому модулю отправлять электронные письма в формате HTML с некоторым дополнительным кодом. Короче говоря, вам нужно изменить
mail_system
переменную и написать свою собственную реализациюMailSystemInterface
. Примером этого является следующий код.Внутри mymodule.install:
Внутри «mymodule.module»:
Вам придется заменить экземпляры mymodule на фактическое имя вашего модуля, а затем отключить и снова включить модуль, чтобы изменить переменную, после чего все должно работать. Для полного примера вы можете проверить мой ответ здесь . Кроме того, эта страница на drupal.org откуда я и получил всю информацию.
источник
Модуль Mime Mail - это почти наверняка то, что вы ищете.
источник
Вы также можете посмотреть на модуль Swift Mailer. Он позволяет отправлять электронные письма в формате HTML с вложенными и обычными вложениями (такими как изображения или файлы). Кроме того, он также способен автоматически генерировать простые текстовые версии на основе электронной почты в формате HTML.
Вы можете взглянуть на это http://www.drupal.org/project/swiftmailer
Для записи: я являюсь автором и сопровождающим модуля.
источник
Вы не отправляете правильный HTML, вы включаете только теги H1 и B, вам, вероятно, нужно включить теги Full HTML, начиная с
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
источник
Ни один из вышеперечисленных ответов не сработал для меня, так что вот мой взгляд на оригинальный вопрос.
Прежде всего, установите и включите модуль Mime Mail . Вы можете прочитать README.txt для получения подробных инструкций по его использованию. Я дам вам короткую версию.
Вам необходимо включить Mime Mail для вашего модуля. Вы можете сделать это используя
hook_enable
илиhook_update_N
вexample.install
:Когда вы перейдете
admin/config/system/mailsystem
на страницу, вы увидите, что для вашего модуля была добавлена новая запись:Теперь вам больше не нужно указывать какие-либо
text/html
заголовки, Mime Mail позаботится об этом. Таким образом, вам не нужно это:Если вы хотите, вы можете добавить
$message['plaintext']
к своей почте альтернативу, отличную от HTML, но это не обязательно.Это оно!
источник