web-dev-qa-db-fra.com

Définissez l'en-tête "de" dans l'e-mail au format "Nom complet" <[email protected]>

Comment puis-je changer l'en-tête from dans l'e-mail envoyé depuis Drupal pour être au format "Fullname" <[email protected]>?

J'ai réussi à le faire sur un site Drupal 6 à un moment donné dans le passé, mais je n'ai plus accès à ce site, et je ne me souviens pas comment le faire.

14
maxedison

Vous pouvez utiliser hook_mail_alter() pour modifier l'adresse e-mail "de" de tout e-mail envoyé depuis votre site. L'adresse e-mail utilisée doit être conforme à la norme RFC, ce qu'elle fait est le titre de votre question. Mais les noms d'utilisateur peuvent être délicats et peuvent contenir des caractères illégaux. Il y a un commentaire sur les documents D6 qui fournit un exemple de code pour formatage correct de l'adresse e-mail . Votre code ressemblerait à quelque chose comme ...

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

En outre, gardez à l'esprit que le simple fait de définir l'adresse "de" peut ne pas avoir les résultats souhaités dans tous les clients de messagerie (voir la discussion sur la file d'attente de problème Drupal ). Vous devrez peut-être également définir "expéditeur", "erreurs sur" et "réponse sur" en fonction de vos besoins. Ces valeurs se trouvent dans l '"en-tête" du $message variable de l'exemple de code ci-dessus.

17
SoftArtisans

Il s'agit de la méthode de Drupal 6 pour ajouter le nom du site à l'e-mail. Remplacez variable_get ('site_name, Drupal') par le nom complet du site que vous souhaitez.

/**
* 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 fonction de hook_mail_alter () n'a pas changé dans Drupal 7, donc cela devrait fonctionner.

11
iStryker

En ce qui concerne les paramètres que vous devez modifier, c'est toujours un problème dans D7. En cas de doute, utilisez le code suivant dans votre hook_mail_alter:

$message['from'] = $from;
$message['headers']['From'] = $from;
$message['headers']['Sender'] = $from;
$message['headers']['Return-Path'] = $from;
3
Countzero