WordPressは本当に便利ですよね。
プラグインを入れすぎるとアップデートとカスタマイズしすぎたテーマの改修は時間がかかるという副作用がありますが、それを差し引いても便利です。
経験が少ないWEBデザイナさんがアップデート頼まれて「え?WordPressのアップデートの案件?あんなのボタンクリック1発だろ?」と、請けてアップデートしたらプラグインが動かない→サーバ環境見直しというお約束を時々見かけますが、簡単がゆえに喰らったときのダメージは結構痛いものです。
それはさておき、メール送信もWP_mail()でphpのmail関数を同じような使い方ができます。
たまにプラグインにmail関数を直接記述しているケースなど見かけましたが、セキュリティ上アップデートがあるwp_mailを使うのが良いですよね。
WordPressでメール送信方法
中身は、 wp-includes/pluggable.phpにあり以下に記述があります。
1 2 |
function wp_mail( $to, $subject, $message, $headers = '', $attachments = array() ) { ~~ 省略 ~~ |
送信の仕方
基本の形は以下です。
1 |
<?php wp_mail( 送信先, タイトル, 本文, ヘッダー,添付ファイル ); ?> |
引数は以下です。
- 送信先 (必須) 送りたい宛先。配列またはコンマ区切りの文字列で複数の宛先を指定できます。初期値なし
- タイトル(文字列) (必須) メッセージ件名。初期値: なし
- メッセージ(文字列) (必須) メッセージの本文。初期値: なし
- ヘッダー(文字列 | 配列) (オプション) メールヘッダー。初期値: 空文字列
- 添付ファイル(文字列 | 配列) (オプション) 添付するファイル。初期値: 空文字列
メールを正常に送信できたかどうかは戻り値で true で行けます。お約束ですが”ちゃんと相手のサーバまで届いたか”ではなく、あくまでWordPressが動いているサーバでphp上処理できたを取得になります。
実際の使い方
メール送信
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?php wp_mail( 'me@example.jp', 'The subject', 'The message' ); ?> <?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 ); ?> |
添付ファイルを送付
1 2 3 4 5 6 |
<?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 ); ?> |
WordPressから送信されるメールの送信者名と送信元メールアドレスを変更。
受け取ったメールには送信者名が「WordPress」送信元アドレスが「wordpress@サイトドメイン」となりますが、これではアレなので、お使いのテーマのfunctions.phpに記述。
1 2 3 4 5 6 7 8 |
function custom_wp_mail_from( $original_email_address ) { return 'info@sys-guard.com';//送信先 } function custom_wp_mail_from_name( $original_email_from ) { return 'システムガーディアン株式会社 SYSTEM-GUARDIAN.Inc';//送信者名 } add_filter('wp_mail_from ','custom_wp_mail_from'); add_filter('wp_mail_from_name','custom_wp_mail_from_name'); |
参考
- https://wpdocs.osdn.jp/関数リファレンス/wp_mail/
- Plugin API/Filter Reference/wp mail from
- Plugin API/Filter Reference/wp mail from name