wp_mail() の使い方|説明・引数・注意点

説明

wp_mail() は、メールを送信する関数です。

基本構文

wp_mail( string|string[] $to, string $subject, string $message, string|string[] $headers = '', string|string[] $attachments = array() ): bool

引数

  • $to:宛先
  • $subject:件名
  • $message:本文
  • $headers:ヘッダー(From、Content-Type など)
  • $attachments:添付ファイル

戻り値

送信を受け付けたら true。

使い方(サンプル)

wp_mail( 'info@example.com', 'お問い合わせ', '本文です' );

注意点

  • true は送信完了ではなく、PHPのメール関数が受け付けたことを示します。
  • 迷惑メール扱いを避けるには、SMTPプラグインなどの利用を検討します。
  • HTMLメールにするには、ヘッダーに Content-Type: text/html を指定します。

実務での使いどころ

  • フォームの内容を、管理者へメールで通知するとき。
  • ユーザーへ、登録の確認メールを送るとき。

よくあるミスと対処

  • 戻り値の true を、「届いた」と考えている。true は、メールの送信処理に渡せたことを示すだけで、届いたことは、保証されない。
  • HTMLメールを送るのに、Content-Type ヘッダーを、指定していない。
  • ユーザーの入力を、そのまま、$headers に使っている。メールヘッダーインジェクションの原因になる。
  • 送信元(From)を、指定していない。

NG例

wp_mail( $to, '件名', '<p>HTML本文</p>' ); // HTMLとして送られず、タグがそのまま見える

OK例

$headers = array(
	'Content-Type: text/html; charset=UTF-8',
	'From: サイト名 <info@example.com>',
);
$sent = wp_mail( $to, '件名', '<p>HTML本文</p>', $headers );

使い分け早見表

関数 役割
wp_mail() メールを送る
is_email() メールアドレスの形式を、確認する
sanitize_email() メールアドレスを、使える文字だけに整える

関連項目

is_email()、wp_remote_post()

公式リファレンス:wp_mail() | Function | WordPress Developer Resources

コメント

タイトルとURLをコピーしました