Setzen Sie die Überschrift "von" in der E-Mail auf das Format "Vollständiger Name" <email@address.com>


15

Wie kann ich den from- Header in der von Drupal gesendeten E-Mail in das Format ändern "Fullname" <email@address.com>?

Ich habe es in der Vergangenheit auf einer Drupal 6-Site geschafft, aber ich habe keinen Zugriff mehr auf diese Site und weiß nicht mehr, wie ich das machen soll.

Antworten:


17

Sie können die hook_mail_alter()Absender-E-Mail-Adresse jeder von Ihrer Website gesendeten E-Mail ändern. Die verwendete E-Mail-Adresse muss dem RFC-Standard entsprechen. Dies ist der Titel Ihrer Frage. Benutzernamen können jedoch schwierig sein und unzulässige Zeichen enthalten. Es gibt einen Kommentar zu den D6-Dokumenten, der ein Codebeispiel für die korrekte Formatierung der E-Mail-Adresse enthält . Ihr Code würde ungefähr so ​​aussehen ...

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

Beachten Sie auch, dass das Einstellen der Absenderadresse möglicherweise nicht bei allen E-Mail-Clients zu den gewünschten Ergebnissen führt (siehe die Diskussion in der Drupal-Problemwarteschlange ). Möglicherweise müssen Sie auch "Absender", "Fehler an" und "Antwort an" entsprechend Ihren Anforderungen festlegen. Diese Werte befinden sich im "Header" der $messageVariablen aus dem obigen Codebeispiel.


6
Vielen Dank. Für diejenigen, die in Zukunft zu dieser Antwort gelangen, ist der letzte Absatz unbedingt zu beachten. Zum Beispiel hat es bei mir NICHT funktioniert, nur die $ message ['from'] zu setzen. Ich musste den Wert $ message ['headers'] ['From'] setzen.
Maxedison

1
Vielen Dank @maxedison. Du hast recht. Ich bearbeite die Antwort und hoffe, dass die Änderung akzeptiert wird.
JCISIO

$ message [ ‚von‘] funktionieren gut für mich Einstellung (5 Jahre später), aber Uhr , dass Sie die doppelten Anführungszeichen von Namen um verwenden
autopoietische

11

Dies ist die Methode von Drupal 6, um den Site-Namen der E-Mail hinzuzufügen. Ersetzen Sie variable_get ('site_name, Drupal') durch den gewünschten vollständigen Site-Namen.

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

Die Funktion für hook_mail_alter () hat sich in Drupal 7 nicht geändert, daher sollte dies funktionieren.


Das ist für mich gearbeitet Gmail & outlook. Danke :)
Validasan

3

In Bezug auf die Einstellungen, die Sie ändern müssen, ist dies in D7 immer noch ein Problem. Verwenden Sie im Zweifelsfall den folgenden Code in Ihrem hook_mail_alter:

$message['from'] = $from;
$message['headers']['From'] = $from;
$message['headers']['Sender'] = $from;
$message['headers']['Return-Path'] = $from;
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.