Setel tajuk “dari” di email menjadi dalam format “Nama Lengkap” <[email protected]>

14

Bagaimana saya bisa mengubah tajuk dari dalam email yang dikirim dari Drupal ke dalam format "Fullname" <[email protected]>?

Saya berhasil melakukannya di situs Drupal 6 pada satu titik di masa lalu, tetapi saya tidak lagi memiliki akses ke situs itu, dan saya tidak ingat bagaimana melakukannya.

maxedison
sumber

Jawaban:

17

Anda dapat menggunakan hook_mail_alter()untuk mengubah alamat email "dari" dari setiap email yang dikirim dari situs Anda. Alamat email yang digunakan harus sesuai dengan standar RFC, yang ia lakukan adalah judul pertanyaan Anda. Tetapi nama pengguna bisa rumit dan mungkin mengandung karakter ilegal. Ada komentar pada dokumen D6 yang menyediakan contoh kode untuk memformat alamat email dengan benar . Kode Anda akan terlihat seperti ...

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

Juga, perlu diingat bahwa hanya pengaturan alamat "dari" mungkin tidak memiliki hasil yang diinginkan di semua klien email (lihat diskusi pada antrian masalah Drupal ). Anda mungkin juga perlu mengatur "pengirim", "kesalahan-ke" dan "balasan-ke" berdasarkan kebutuhan Anda. Nilai-nilai itu ada di "header" $messagevariabel dari contoh kode di atas.

SoftArtisans
sumber
6
Terima kasih. Bagi mereka yang sampai pada jawaban ini di masa depan, pasti memperhatikan paragraf terakhir. Misalnya, hanya menyetel $ message ['from'] TIDAK berfungsi untuk saya. Saya harus mengatur nilai $ message ['header'] ['Dari'].
maxedison
1
Terima kasih @maxedison. Kamu benar. Saya sedang mengedit jawaban dan berharap modifikasi akan diterima.
jcisio
pengaturan $ message ['from'] bekerja dengan baik untuk saya (5 tahun kemudian), tetapi perhatikan bahwa Anda menggunakan tanda kutip ganda dari nama
autopoietic
11

Ini adalah metode dari Drupal 6 untuk menambahkan nama situs ke email. Ganti variable_get ('site_name, Drupal') dengan Nama Lengkap Situs yang Anda inginkan.

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

fungsi untuk hook_mail_alter () tidak berubah di Drupal 7, jadi ini seharusnya berfungsi.

iStryker
sumber
Ini bekerja untuk saya Gmail & outlook. Terima kasih :)
kalidasan
3

Mengenai pengaturan yang harus Anda ubah, ini masih menjadi masalah di D7. Jika ragu, gunakan kode berikut di hook_mail_alter Anda:

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