web-dev-qa-db-ja.com

メールの「from」ヘッダーを「フルネーム」<[email protected]>の形式に設定します

Drupalから送信されたメールのfromヘッダーを"Fullname" <[email protected]>の形式に変更するにはどうすればよいですか?

Drupal過去のある時点で6つのサイトでなんとかできましたが、そのサイトにアクセスできなくなったので、その方法を覚えていません。

14
maxedison

hook_mail_alter() を使用して、サイトから送信されるメールの「送信元」メールアドレスを変更できます。使用する電子メールアドレスは、RFC標準に準拠する必要があります。これは、質問のタイトルです。ただし、ユーザー名は扱いにくく、不正な文字が含まれている可能性があります。 電子メールアドレスを適切にフォーマットするためのコードサンプル を提供するD6ドキュメントに関するコメントがあります。コードは次のようになります...

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

また、「差出人」アドレスを設定しただけでは、すべての電子メールクライアントで望ましい結果が得られない場合があることに注意してください(Drupal発行キューの ディスカッションを参照) )必要に応じて、「sender」、「errors-to」、「reply-to」を設定する必要がある場合もあります。これらの値は、$message変数の「ヘッダー」にあります上記のコードサンプル。

17
SoftArtisans

これは、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で変更されていないため、これで動作するはずです。

11
iStryker

変更する必要がある設定に関しては、これはD7の問題です。疑問がある場合は、hook_mail_alterで次のコードを使用してください。

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