E-postadaki "from" başlığını "Tam Ad" biçiminde olacak şekilde ayarlayın <email@address.com>


14

Nasıl değiştirebilir gelen biçiminde olması Drupal gönderilen e-postadaki başlığındaki "Fullname" <email@address.com>?

Geçmişte bir noktada bir Drupal 6 sitesinde yapmayı başardım, ancak artık bu siteye erişimim yok ve nasıl yapılacağını hatırlamıyorum.

Yanıtlar:


17

hook_mail_alter()Sitenizden gönderilen herhangi bir e-postanın "Kimden" e-posta adresini değiştirmek için kullanabilirsiniz . Kullanılan e-posta adresinin, sorunuzun başlığı olan RFC standardına uyması gerekir. Ancak kullanıcı adları yanıltıcı olabilir ve geçersiz karakterler içerebilir. D6 belgelerinde , e-posta adresini doğru biçimlendirmek için bir kod örneği sağlayan bir yorum var . Kodunuz şuna benzer ...

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

Ayrıca, yalnızca "gönderen" adresini ayarlamanın tüm e-posta istemcilerinde istenen sonuçları vermeyebileceğini unutmayın ( Drupal sorun kuyruğundaki tartışmaya bakın ). Gereksinimlerinize göre "gönderen", "hatalar" ve "yanıtlar" ayarlarını da yapmanız gerekebilir. Bu değerler, $messageyukarıdaki kod örneğindeki değişkenin "üstbilgisinde" bulunur .


6
Teşekkürler. Gelecekte bu cevaba gelenler için kesinlikle son paragrafa dikkat edin. Örneğin, sadece $ mesajını ['from'] ayarlamak benim için işe yaramadı. $ Message ['headers'] ['From'] değerini ayarlamam gerekiyordu.
maxedison

1
Teşekkürler @maxedison. Haklısın. Cevabı düzenliyorum ve değişikliğin kabul edileceğini umuyorum.
jcisio

$ message ['from'] ayarı benim için iyi çalıştı (5 yıl sonra), ancak adın etrafındaki çift tırnak işaretlerini kullandığınızı izleyin
autopoietic

11

Site adını e-postaya eklemek için Drupal 6'dan gelen yöntem budur. Variable_get ('site_name, Drupal') yerine istediğiniz Site Tam Adını yazın.

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

Drupal 7'de hook_mail_alter () işlevi değişmedi, bu yüzden çalışması gerekir.


Bu benim için çalıştı Gmail & outlook. Teşekkürler :)
kalidasan

3

Değiştirmeniz gereken ayarlarla ilgili olarak, bu hala D7'de bir sorundur. Şüpheniz varsa, hook_mail_alter'ınızda şu kodu kullanın:

$message['from'] = $from;
$message['headers']['From'] = $from;
$message['headers']['Sender'] = $from;
$message['headers']['Return-Path'] = $from;
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.