web-dev-qa-db-ja.com

何故wp_mail()でFrom:ヘッダを設定できないのか PHP mail()はしますか?

wp_mail( $to, $subject, $message, $headers )を使う場合(もちろん値を適切に設定した場合)、Eメールは差出人名と私が見つけることができる場所に設定されていないEメール(PHPやApacheの設定でさえも)で送られます。ただし、代わりにmail( $to, $subject, $message, $headers )を使用しても問題ありません。これを引き起こすためにwp_mail()で何が起こったのでしょうか?

32
helenhousandi

こんにちは @helenyhou:

あなたは単にパラメータではなく、ヘッダを設定することができます。 WordPressは "hooks" を使い、あなたが必要とするフックは'wp_mail_from''wp_mail_from_name'フックです。

wp_mail()を電子メールアドレスfunctions.phpに使用するときに"From:"ヘッダーを修正するためにあなたがあなたのテーマのHelen Hou-Sandi <[email protected]>ファイルに追加するかもしれないフックはここにあります:

add_filter('wp_mail_from','yoursite_wp_mail_from');
function yoursite_wp_mail_from($content_type) {
  return '[email protected]';
}
add_filter('wp_mail_from_name','yoursite_wp_mail_from_name');
function yoursite_wp_mail_from_name($name) {
  return 'Helen Hou-Sandi';
}
44
MikeSchinkel

あなたのヘッダでFrom: "Your Name" <[email protected]>\r\nフォーマットを使用しているのであれば、問題ないはずです(wp_mail関数を上書きするプラグインがインストールされていない限り)。

しかし、マイクが言ったように、あなたはそれらのフィルタで最終的な値をフィルタすることができます、あるいはあなたはただこのプラグインをインストールすることができます:

から送信

Wp_mailで使用する名前とEメールを決定するためのオプション設定が表示されます。

4
John P Bloch

ちょっとしたハックですが、Reply Toヘッダータグを使うこともできます。

$headers = 'Reply-To: "Aaren A. Aarenson" <[email protected]>';

残念ながら、このをFromリストに追加し、返信するとwp_mail_fromフィルタで設定されたアドレスを手動で削除しなければならなくなります。

1
Sjors Hijgenaar

古い質問を復活させて申し訳ありませんが、次のようにヘッダーを介して設定することをお勧めします。

$subject  = "MyPlugin: Alert (".get_bloginfo('wpurl').")";
$headers  = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type: text/html; charset=".get_bloginfo('charset')."" . "\r\n";
$headers .= "From: MyPlugin <".$this->settings['from_address'].">" . "\r\n";
wp_mail($this->settings['notify_address'], $subject, $alertMessage, $headers);

そうすれば、フィルタを使用してからwp_mail()の後に削除することを心配する必要はありません。

1
Brady

私は同じ問題を抱えていました。私にとっては、ホスティングプロバイダ(BlueHost)がfromフィールドの変更を妨げていることがわかりました。ここで彼らはそれを説明します https://my.bluehost.com/cgi/help/206

私は彼らが言うようにcPanelメールボックスに電子メールを追加することで問題を解決しました。

0
Tigran