Defina o cabeçalho "de" no email para o formato "Nome completo" <email@address.com>


15

Como posso alterar o cabeçalho from no email enviado do Drupal para o formato "Fullname" <email@address.com>?

Consegui fazê-lo em um site Drupal 6 em um ponto no passado, mas não tenho mais acesso a esse site e não me lembro de como fazê-lo.

Respostas:


17

Você pode usar hook_mail_alter()para alterar o endereço de email "de" de qualquer email enviado do seu site. O endereço de email usado precisa estar em conformidade com o padrão RFC, que é o título da sua pergunta. Mas os nomes de usuário podem ser complicados e podem conter caracteres ilegais. Há um comentário nos documentos do D6 que fornece um exemplo de código para formatar corretamente o endereço de email . Seu código seria algo como ...

function yourmodule_mail_alter(&$message) {
  $message['from'] = $message['headers']['From'] = '"Full Name" <email@address.com>';
}

Além disso, lembre-se de que apenas definir o endereço "de" pode não ter os resultados desejados em todos os clientes de email (consulte a discussão na fila de problemas do Drupal ). Você também pode precisar definir "remetente", "erros para" e "responder para" com base em seus requisitos. Esses valores estão no "cabeçalho" da $messagevariável do exemplo de código acima.


6
Obrigado. Para quem chegar a essa resposta no futuro, preste atenção definitivamente no parágrafo final. Por exemplo, apenas definir a mensagem $ ['from'] NÃO funcionou para mim. Eu tive que definir o valor $ message ['headers'] ['From'].
maxedison

11
Obrigado @maxedison. Você está certo. Estou editando a resposta e espero que a modificação seja aceita.
jcisio

configuração $ mensagem [ 'de'] finas trabalhou para mim (5 anos mais tarde), mas relógio que você usa as aspas em torno do nome
autopoiético

11

Este é o método do Drupal 6 para adicionar o nome do site ao email. Substitua variable_get ('site_name, Drupal') pelo nome completo do site que você deseja.

/**
* Implementation of hook_mail_alter().
* Here we allow the site name to be used as the senders name for outgoing email.
* see http://drupal.org/node/209672
*/
function mymodule_mail_alter(&$message){
  $default_from = variable_get('site_mail', ini_get('sendmail_from'));

  if($message['from'] == $default_from){
    $message['from'] = '"'. variable_get('site_name', 'Drupal') .'" <'. $default_from .'>';
    $message['headers']['From'] = $message['headers']['Sender'] = $message['headers']['Return-Path'] = $message['headers']['Errors-To'] = $message['headers']['Reply-To'] = $message['from'];
  }
}

a função hook_mail_alter () não foi alterada no Drupal 7, portanto, isso deve funcionar.


Isso é trabalhado para mim Gmail & outlook. Obrigado :)
kalidasan

3

Com relação às configurações que você precisa alterar, esse ainda é um problema no D7. Em caso de dúvida, use o seguinte código no seu hook_mail_alter:

$message['from'] = $from;
$message['headers']['From'] = $from;
$message['headers']['Sender'] = $from;
$message['headers']['Return-Path'] = $from;
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.