Estou criando um módulo simples que enviará emails em HTML aos usuários para ofertas em nosso site.
Pesquisei bastante, mas não consigo encontrar uma solução adequada para o Drupal. Agora posso enviar e-mails, mas com texto simples.
O que é um procedimento passo a passo para enviar emails em HTML no Drupal 7?
function example_form_submit( $form,&$form_state) {
$friend_email=$form_state['values']['friend_email'];
$mailto =$friend_email; //gift to a friend
$mailfrom ='[email protected]';
$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;
}
}
Respostas:
Como Geoff mencionou, uma opção seria usar o módulo Mime Mail, mas você também pode ativar seu módulo personalizado para enviar e-mails em HTML com algum código extra. Em resumo, você precisaria alterar a
mail_system
variável e escrever sua própria implementaçãoMailSystemInterface
. Um exemplo disso é o seguinte código.Dentro de 'mymodule.install':
Dentro de 'mymodule.module':
Você precisaria substituir as instâncias do mymodule pelo nome real do módulo e desativar e reativar o módulo para alterar a variável após a qual as coisas deveriam estar funcionando. Para um exemplo completo, você pode conferir minha resposta aqui . Além disso, esta página no drupal.org é de onde originalmente obtive todas as informações.
fonte
O módulo Mime Mail é quase certamente o que você está procurando.
fonte
Você também pode querer olhar para o módulo Swift Mailer. Permite enviar e-mails em HTML com anexos embutidos e regulares (como imagens ou arquivos). Além disso, também é capaz de gerar automaticamente versões de texto sem formatação com base no email em HTML.
Você pode dar uma olhada nele http://www.drupal.org/project/swiftmailer
Para constar: eu sou o autor e mantenedor do módulo.
fonte
Você não está enviando HTML adequado, inclui apenas as tags H1 e B, provavelmente precisará incluir tags HTML completas, a partir de
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
fonte
Nenhuma das respostas acima funcionou para mim, então aqui está minha opinião sobre a pergunta original.
Antes de tudo, instale e ative o módulo Mime Mail . Você pode ler o arquivo README.txt para obter instruções completas sobre como usá-lo. Eu vou te dar a versão curta.
Você precisa habilitar o Mime Mail para o seu módulo. Você pode fazer isso usando
hook_enable
ouhook_update_N
emexample.install
:Ao acessar,
admin/config/system/mailsystem
você verá que uma nova entrada foi adicionada ao seu módulo:Agora você não precisa mais especificar nenhum
text/html
cabeçalho, o Mime Mail cuida disso. Então você não precisa disso:Se desejar, você pode adicionar
$message['plaintext']
ao seu email uma alternativa não HTML, mas isso não é necessário.É isso aí!
fonte