Impostare l'intestazione "from" nell'e-mail in modo che sia nel formato "Nome completo" <email@address.com>


14

Come posso cambiare l' intestazione from nell'email inviata da Drupal per essere nel formato "Fullname" <email@address.com>?

Sono riuscito a farlo su un sito Drupal 6 ad un certo punto in passato, ma non ho più accesso a quel sito e non ricordo come farlo.

Risposte:


17

È possibile utilizzare hook_mail_alter()per modificare l'indirizzo e-mail "da" di qualsiasi e-mail inviata dal proprio sito. L'indirizzo e-mail utilizzato deve essere conforme allo standard RFC, che è il titolo della domanda. Ma i nomi degli utenti possono essere complicati e contenere caratteri illegali. C'è un commento sui documenti D6 che fornisce un esempio di codice per formattare correttamente l'indirizzo e-mail . Il tuo codice sarebbe simile a ...

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

Inoltre, tieni presente che la semplice impostazione dell'indirizzo "da" potrebbe non avere i risultati desiderati in tutti i client di posta elettronica (vedi la discussione sulla coda dei problemi di Drupal ). Potrebbe inoltre essere necessario impostare "mittente", "errori su" e "risposta" in base alle proprie esigenze. Tali valori si trovano nell'intestazione della $messagevariabile dall'esempio di codice sopra riportato.


6
Grazie. Per coloro che giungeranno a questa risposta in futuro, presta sicuramente attenzione al paragrafo finale. Ad esempio, solo l'impostazione del messaggio $ ['da'] NON ha funzionato per me. Ho dovuto impostare il valore $ message ['headers'] ['From'].
maxedison,

1
Grazie @maxedison. Hai ragione. Sto modificando la risposta e spero che la modifica venga accettata.
jcisio,

impostare $ message ['da'] ha funzionato bene per me (5 anni dopo), ma guarda che usi le doppie virgolette dal nome
autopoietico

11

Questo è il metodo di Drupal 6 per aggiungere il nome del sito all'e-mail. Sostituisci variabile_get ('nome_sito, Drupal') con il nome completo del sito che desideri.

/**
* 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'];
  }
}

la funzione per hook_mail_alter () non è cambiata in Drupal 7, quindi dovrebbe funzionare.


Questo ha funzionato per me per Gmail & outlook. Grazie :)
kalidasan,

3

Per quanto riguarda le impostazioni che devi modificare, questo è ancora un problema in D7. In caso di dubbi, utilizzare il seguente codice in hook_mail_alter:

$message['from'] = $from;
$message['headers']['From'] = $from;
$message['headers']['Sender'] = $from;
$message['headers']['Return-Path'] = $from;
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.