電子メールの「from」ヘッダーを「Full Name」<email@address.com>という形式に設定します


15

Drupalから送信された電子メールのfromヘッダーを形式に変更するにはどうすればよいです"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
ありがとう。将来この答えにたどり着く人のために、間違いなく最後の段落に注意を払ってください。たとえば、$ message ['from']を設定するだけではうまくいきませんでした。$ message ['headers'] ['From']値を設定する必要がありました。
マキシディソン

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。ありがとう:)
カリダサン

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.