it-swarm-vi.com

Đặt tiêu đề "từ" trong email thành định dạng "Họ và tên" <[email protected]>

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

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ớ cách thực hiện.

14
maxedison

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, đó 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ã cho đị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 protected]>';
}

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 thảo luận về Drupal vấn đề hàng đợi ). Bạn cũng có thể cần phải đặt "người gửi", "lỗi thành" và "trả lời" dựa trên yêu cầu của mình. Các giá trị đó nằm trong "tiêu đề" của $message biến từ mẫu mã ở trên.

17
SoftArtisans

Đây là phương thức 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.

11
iStryker

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;
3
Countzero