Đặt tiêu đề của Từ từ trong thư điện tử thành định dạng ở Tên đầy đủ của Tên <Email@address.com>


15

Làm cách nào tôi có thể thay đổi từ tiêu đề trong email được gửi từ Drupal sang định dạng "Fullname" <email@address.com>?

Tôi đã quản lý để làm điều đó trên một trang web Drupal 6 tại một thời điểm trong quá khứ, nhưng tôi không còn có quyền truy cập vào trang web đó nữa và tôi không nhớ làm thế nào để làm điều đó.

Câu trả lời:


17

Bạn có thể sử dụng hook_mail_alter()để thay đổi địa chỉ email "từ" của bất kỳ email nào được gửi từ trang web của bạn. Địa chỉ email được sử dụng cần tuân thủ tiêu chuẩn RFC, đây là tiêu đề câu hỏi của bạn. Nhưng tên người dùng có thể khó và có thể chứa các ký tự không hợp lệ. Có một nhận xét về các tài liệu D6 cung cấp một mẫu mã để định dạng đúng địa chỉ email . Mã của bạn sẽ trông giống như ...

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

Ngoài ra, hãy nhớ rằng chỉ cần đặt địa chỉ "từ" có thể không có kết quả mong muốn trong tất cả các ứng dụng email (xem phần thảo luận về hàng đợi vấn đề Drupal ). Bạn cũng có thể cần đặt "người gửi", "lỗi thành" và "trả lời" dựa trên yêu cầu của bạn. Các giá trị này nằm trong "tiêu đề" của $messagebiến từ mẫu mã ở trên.


6
Cảm ơn. Đối với những người đi đến câu trả lời này trong tương lai, chắc chắn chú ý đến đoạn cuối cùng. Ví dụ: chỉ đặt thông báo $ ['từ'] KHÔNG hoạt động với tôi. Tôi đã phải đặt giá trị $ message ['headers'] ['From'].
maxedison

1
Cảm ơn @maxedison. Bạn đúng rồi. Tôi đang chỉnh sửa câu trả lời và hy vọng sửa đổi sẽ được chấp nhận.
jcisio

thiết lập $ message ['from'] hoạt động tốt với tôi (5 năm sau), nhưng hãy xem rằng bạn có sử dụng dấu ngoặc kép quanh tên
autopoietic

11

Đây là phương pháp từ Drupal 6 để thêm tên trang web vào email. Thay thế biến_get ('site_name, Drupal') với Tên đầy đủ của trang web bạn muố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'];
  }
}

hàm cho hook_mail_alter () không thay đổi trong Drupal 7, vì vậy điều này sẽ hoạt động.


Điều này được làm việc cho tôi cho Gmail & outlook. Cảm ơn :)
kalidasan

3

Về cài đặt bạn phải thay đổi, đây vẫn là một vấn đề trong D7. Nếu nghi ngờ, hãy sử dụng mã sau trong hook_mail_alter của bạn:

$message['from'] = $from;
$message['headers']['From'] = $from;
$message['headers']['Sender'] = $from;
$message['headers']['Return-Path'] = $from;
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.