万が一、当サイトで重大な問題を発見した際などは、フォーラムや WordSlack #docs チャンネルでお知らせください。</p>
関数リファレンス/wp mail
目次
[非表示]説明
電子メールを送る関数です。PHP の mail() と似ています。
デフォルトの送信者名は "WordPress"、デフォルトの送信元メールアドレスは wordpress@yoursite.com です(訳注: yoursite.com はサーバー名)。これらは例えば次のようなヘッダーを含めると変更できます:
From: "Example User" <email@example.jp>
オプションのフィルター 'wp_mail_from'/en と 'wp_mail_from_name'/en が、送信元メールアドレスと送信者名に適用されます。そして返された値が '"Example User" <email@address.jp>' のように組み合わされて 'from' アドレスになります。もし 'wp_mail_from' だけが値を返した場合、メールアドレスだけが使われて送信者名は省略されます。
デフォルトのコンテンツタイプ(データ型)は 'text/plain' なので HTML は使えません。フィルター 'wp_mail_content_type'/en を使うか(下記の例を参照)、それとも "Content-type: text/html" のようなヘッダーを含めると、コンテンツタイプを変更できます。しかし、メール送信後に 'wp_mail_content_type' を 'text/plain' へ戻すのを忘れないでください。戻し忘れると WordPress 自身やプラグインやテーマが送信するメールに予期しない問題が発生するかもしれないからです。
デフォルトの文字セットはブログに使われている文字セットに基づきます。フィルター 'wp_mail_charset'/en を使えば文字セットを変更できます。
使い方
<?php wp_mail( $to, $subject, $message, $headers, $attachments ); ?>
パラメータ
- $to
- (文字列 | 配列) (必須) 送りたい宛先。配列またはコンマ区切りの文字列で複数の宛先を指定できます。
- 初期値: なし
- $subject
- (文字列) (必須) メッセージの件名。
- 初期値: なし
- $message
- (文字列) (必須) メッセージの本文。
- 初期値: なし
- $headers
- (文字列 | 配列) (オプション) メッセージに付けて送るメールヘッダー。文字列形式の場合、各ヘッダー行(From: や Cc: 等で始まる)を改行で区切る("\r\n")。(上級者用)
- 初期値: 空文字列
- $attachments
- (文字列 | 配列) (オプション) 添付するファイル。形式は一つのファイル名、ファイル名の配列、または複数のファイル名を改行で区切った一つの文字列。(上級者用)
- 初期値: 空文字列
戻り値
- (真偽値) (必須) メールを正常に送信できたかどうか。
- 初期値: なし
戻り値が true であっても、ユーザーがメールを本当に受信したことを表すのではありません。用いられた方法が要求をエラーなく処理できたことのみを表します。
用例
基本的な用例:
<?php wp_mail( 'me@example.jp', 'The subject', 'The message' ); ?>
添付ファイルと "from" ヘッダーを付加:
<?php $attachments = array( WP_CONTENT_DIR . '/uploads/file_to_attach.zip' ); $headers = 'From: My Name <myname@example.jp>' . "\r\n"; wp_mail( 'test@example.org', 'subject', 'message', $headers, $attachments ); ?>
複数の宛先へ送信:
<?php
$multiple_recipients = array(
'recipient1@example.jp',
'recipient2@foo.example.jp'
);
$subj = 'The email subject';
$body = 'This is the body of the email';
wp_mail( $multiple_recipients, $subj, $body );
?>
HTML 形式のメールに切り替える(フィルター wp_mail_content_type を使用):
<?php
add_filter( 'wp_mail_content_type', 'set_html_content_type' );
$to = 'sendto@example.jp';
$subject = 'The subject';
$body = 'The email body content';
wp_mail( $to, $subject, $body );
// トラブルを避ける為にコンテツタイプをリセット -- http://core.trac.wordpress.org/ticket/23578
remove_filter( 'wp_mail_content_type', 'set_html_content_type' );
function set_html_content_type() {
return 'text/html';
}
?>
別の方法として、HTTP ヘッダーの Content-Type を $headers パラメータに指定:
$to = 'sendto@example.jp'; $subject = 'The subject'; $body = 'The email body content'; $headers = array( 'Content-Type: text/html; charset=UTF-8' ); wp_mail( $to, $subject, $body, $headers ); ?>
配列形式の $headers を使う例:
<?php // これより前に $to, $subject, $message が定義済みとする... $headers[] = 'From: Me Myself <me@example.jp>'; $headers[] = 'Cc: John Q Codex <jqc@example.org>'; $headers[] = 'Cc: iluvwp@example.org'; // シンプルにメールアドレスだけでも構わない wp_mail( $to, $subject, $message, $headers ); ?>
参考
- 戻り値の true は、ユーザーがメールを本当に受信したことを表すのではありません。
- この関数が動作するには、設定項目
SMTPとsmtp_port(デフォルト: 25)を php.ini ファイル内でセットする必要があります。 - この関数が利用できるのは、フック
'plugins_loaded'/en より後です。 - パラメータ
$attachmentsに入れるファイル名はファイルシステムのパスとします。
有効なアドレス形式
wp_mail() の $to パラメータに与えるメールアドレスは RFC 2822 に準拠しなければなりません。幾つか例を示します:
- user@example.jp
- user@example.jp, anotheruser@example.jp
- User <user@example.jp>
- User <user@example.jp>, Another User <anotheruser@example.jp>
同じ制約が $headers の Cc: と Bcc: フィールドにもありますが、次のセクションで説明するように、一行に複数のアドレスを書くよりも配列に入れる方がお勧めです。どちらのアドレス形式も、ユーザー名を付けても付けなくても、使用できます。
$headers を使って "From:", "Cc:", "Bcc:" パラメータをセットする
"From:" メールアドレスに WordPress デフォルトの送信者(上記の説明を参照)ではないアドレスをセットしたり、"Cc:" や "Bcc:" の宛先を追加したりするには、$headers パラメータを使わなければなりません。
$headers は文字列にも配列にもできますが、配列形式の方がたぶん簡単でしょう。使い方は、有効なメールアドレスの前に "From:", "Bcc:" または "Cc:" を付けて(":" を付けることに注意)、配列へ入れます。
配列形式を使う場合、行区切り("\n" や "\r\n")を含める必要はありません。この関数は一行あたり複数のメールアドレスを扱えますが、各メールアドレスを別々に $headers 配列へ入れるほうがたぶん簡単でしょう。関数が判断して適切な MIME ヘッダーを自動的に組み上げます。配列に入れる各文字列の先頭にヘッダータイプの文字列("From:", "Bcc:" または "Cc:")を付けるのを忘れないでください。
変更履歴
1.2.1 : 新規導入
ソースファイル
wp_mail() は wp-includes/pluggable.php にあります。
関連資料
- Troubleshooting wp_mail WordPress Email Configuration
- Testing your WordPress email settings for the wp_mail function
- 関数: wp_mail()
- フィルター: wp_mail/en, wp_mail_from/en, wp_mail_from_name/en, wp_mail_content_type/en, wp_mail_charset/en
- アクション: phpmailer_init/en
最新英語版: WordPress Codex » Function Reference/wp_mail (最新版との差分)