Установіть заголовок "від" в електронній пошті у форматі "Повне ім'я" <email@address.com>


14

Як я можу змінити заголовок від в електронному листі, надісланому від Drupal, на формат "Fullname" <email@address.com>?

Я встиг зробити це на сайті Drupal 6 свого часу, але більше не маю доступу до цього сайту, і не пам'ятаю, як це зробити.

Відповіді:


17

Ви можете використовувати hook_mail_alter()для зміни електронної адреси "з" будь-якого електронного листа, надісланого з вашого веб-сайту. Електронна адреса електронної пошти повинна відповідати стандарту RFC, і це саме заголовок вашого питання. Але імена користувачів можуть бути складними і можуть містити незаконні символи. Існує коментар до документів D6, який пропонує зразок коду для правильного форматування електронної адреси . Ваш код виглядатиме приблизно так ...

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

Також майте на увазі, що лише встановлення адреси "від" може не мати бажаних результатів у всіх клієнтів електронної пошти (див. Обговорення в черзі випуску Drupal ). Можливо, вам також знадобиться встановити "відправник", "помилки" та "відповідь до" відповідно до ваших вимог. Ці значення знаходяться у "заголовку" $messageзмінної з наведеного вище зразка коду.


6
Спасибі. Для тих, хто в майбутньому прийде до цієї відповіді, обов'язково зверніть увагу на заключний параграф. Наприклад, просто встановлення $ повідомлення ['from'] для мене НЕ працювало. Мені довелося встановити значення $ message ['headers'] ['From'].
maxedison

1
Дякую @maxedison. Ти правий. Я редагую відповідь і сподіваюся, що модифікація буде прийнята.
jcisio

налаштування $ message ['від'] спрацювало мені добре (5 років пізніше), але слідкуйте, щоб ви використовували подвійні лапки від імені
autopoietic

11

Це метод від Drupal 6 для додавання імені сайту до електронної пошти. Замініть змінний_розмір ('ім'я_комісії, Drupal') на потрібне повне ім’я сайту.

/**
* 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 функція для kuka_mail_alter () не змінилася, тому це має працювати.


Це для мене працює Gmail & outlook. Дякую :)
kalidasan

3

Щодо налаштувань, які ви повинні змінити, це все ще проблема в D7. Якщо у вас виникли сумніви, використовуйте наступний код у вашому_укріпному_матері:

$message['from'] = $from;
$message['headers']['From'] = $from;
$message['headers']['Sender'] = $from;
$message['headers']['Return-Path'] = $from;
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.