ตั้งค่าส่วนหัว“ จาก” ในอีเมลให้อยู่ในรูปแบบ“ ชื่อเต็ม” <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
ขอบคุณ สำหรับผู้ที่มาถึงคำตอบนี้ในอนาคตให้ใส่ใจกับย่อหน้าสุดท้ายอย่างแน่นอน ตัวอย่างเช่นเพียงแค่ตั้งค่าข้อความ $ ['จาก'] ไม่ได้ผลสำหรับฉัน ฉันต้องตั้งค่าข้อความ $ ['ส่วนหัว'] ['จาก']
maxedison

1
ขอบคุณ @ maxedison คุณพูดถูก ฉันกำลังแก้ไขคำตอบและหวังว่าการแก้ไขจะได้รับการยอมรับ
jcisio

การตั้งค่าข้อความ $ ['จาก'] ทำงานได้ดีสำหรับฉัน (5 ปีต่อมา) แต่ดูว่าคุณใช้เครื่องหมายคำพูดคู่จากชื่อ
autopoietic

11

นี่คือวิธีการจาก Drupal 6 เพื่อเพิ่มชื่อเว็บไซต์ไปยังอีเมล ทดแทน variable_get ('site_name, 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'];
  }
}

ฟังก์ชั่นสำหรับ hook_mail_alter () ไม่ได้เปลี่ยนแปลงใน Drupal 7 ดังนั้นจึงควรใช้งานได้


Gmail & outlookนี้จะทำงานให้ฉัน ขอบคุณ :)
kalidasan

3

เกี่ยวกับการตั้งค่าที่คุณต้องเปลี่ยนนี่ยังคงเป็นปัญหาใน D7 หากมีข้อสงสัยให้ใช้รหัสต่อไปนี้ใน hook_mail_alter ของคุณ:

$message['from'] = $from;
$message['headers']['From'] = $from;
$message['headers']['Sender'] = $from;
$message['headers']['Return-Path'] = $from;
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.