wp_mail()関数でWordPressのスパム対策済のメールフォーム作成
2017/03/10
WordPressのメール送信フォームでwp_mail()関数を
WordPressでメールの送信関数は wp_mail()
WordPressでメール送信フォームを作成する必要がありまして、メール送信に関して調査しましたので、その情報をお伝えします。
wordpressからメールを送信する際の関数は「wp_mail()」で、
/wp-includes/pluggable.php
の 224行目(WordPress 4.2.2の場合)にある「function wp_mail...」に記述されています。
wp_mail()関数の最小構成
メール送信関数「wp_mail()」の最小構成は下記になります。
これだけでメールが送信できてしまいます。
1 |
wp_mail ( '送信先のメールアドレス', 'メールの件名', 'メールの本文' ); |
wp_mail()関数の引数の詳細
メール送信関数「wp_mail()」は、先の最小構成だけではなく、下記の引数を設定することが出来るようになっており、Ccや添付ファイルの送信も出来るようになっています。
1 |
$return = wp_mail ( $to, $subject, $message, $headers = '', $attachments = array() ); |
$to(送信先メールアドレス)
送信先のメールアドレスを編集します。
送り先が 1件だけならば変数にメールアドレスを入れるだけですが、送り先が複数件ある場合は、下記のように配列でメールアドレスを指定することで対応が可能です。
1 |
$to = array ( "aaa@example.com", "bbb@example.com" ); |
$subject(メールの件名)
メールの件名(subject)を入力します。
日本語でも全く問題ありません。
$message(メールの本文)
メールの本文を編集します。
メールの本文ですので、改行は「<br>」ではなく、普通の改行(\n)で編集します。
$headers = ”(メールのヘッダー情報)
ヘッダー情報をデフォルトの設定から変更したい場合に指定をします。
デフォルトの設定は、送信者名は「WordPress」、送信元のメールアドレスは「wordpress@yoursite.com」です(「yoursite.com」はサーバのドメインが自動的に編集されます。「www.s-giken.net」など「www.」の場合は「www.」は除外されます。)。
$headersの設定方法は、改行でつないでいく方法と配列で指定していく方法がありますが、配列で指定する方が簡単なような気がしますので、そちらで解説します。
1 2 3 4 5 |
$headers = array ( 'From: Yamada Taro <taro@example.com>', 'Cc: Yamada Jiro <jiro@example.com>', 'Bcc: saburo@example.com', 'Content-Type: text/html; charset=UTF-8', ); |
Fromや Cc、Bccの設定は、3行目の Bccの様にメールアドレスだけの指定でも問題ありません。
Ccを複数にしたい場合は、2行目の Ccを複数個設定するだけで OKです。
HTMLメールを送信するときは、4行目のように「Content-Type」や「charset」を指定します。
ちなみに、4行目が指定されていない場合は「’Content-Type: text/plain; charset=UTF-8’」がデフォルト値となります。
$attachments = array()(添付ファイルの設定)
添付ファイルの設定をします。
添付ファイルの設定は、下記のように配列でファイルを指定するだけです。複数ある場合も配列で複数指定するだけです。
1 2 3 |
$attachments = array ( WP_CONTENT_DIR . '/uploads/aaa.zip', 'http://example.com/image/bbb.jpg', ); |
$return(戻り値)
wp_mail()関数を実行した結果が返ってきます。
成功なら「true」、失敗ならば「false」が返ってきます。
Return Pathを指定する方法
Return Pathの設定は、「$headers」で指定できそうですが、$headersでは指定できないようで、専用のアクションフックで指定をします。
下記を「wp_mail()」が実行される前に追記します。
1 2 3 4 |
function set_return_path( $phpmailer ) { $phpmailer->Sender = 'taro@example.com'; } add_action( 'phpmailer_init', 'set_return_path' ); |
WordPress wp_mail() + SMTPサーバ送信
サーバによっては、WordPressを含めて、PHPで作成するメール送信フォームから送信するメールがスパム扱いになるという不具合が発生する場合があります。
これは、PHPのプログラムの記述の方法が問題なのではなく、メールを送信するプログラムである sendmailの設定(スパム対策の設定)が十分でないことに起因することが多々あります(なので PHPのプログラムの記述方法を変えても改善しません)。
そんな不具合に対処するための方法が外部の SMTPサーバを経由してメールを送信するという方法で、PHPMailerというライブラリが提供されていますので、これを利用するのが便利です。
WordPressの場合は、PHPMailerを利用するためのプラグインとして WP Mail SMTP、Easy WP SMTP、WP SMTPなどが提供されていますので、これらのプラグインをインストールするといいでしょう。
詳しくは「WordPressのメールがスパム判定!?WP Mail SMTP、WP SMTP、Easy WP SMTPで対応」に記事を書いていますので、こちらも参照してください。
また、PHPでオリジナルのプログラムを組むときに PHPMailerを使いたい場合については、「Phpmailerでスパム回避!Gmail等のSMTPを経由するPHPのメールフォーム解説」の記事を参照してください。
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!
関連記事
-
WordPressのおすすめの確認画面付きお問い合わせフォームプラグイン・MW WP Form
MW WP Formは確認画面が付いているオススメのフォームプラグインです。企業サイトを CMSとして構築する際にも利用できる実力派です。
-
WordPressのサイトマップ生成ツールPS Auto Sitemapの使い方
サイトマップを PS Auto Sitemapで自動生成する方法を説明します。このプラグインは Google用のサイトマップではなく一般ユーザが見るためのサイトマップページを作ります。
-
自サイト内のリンクをショートコードで指定する・アンカーリンク対応版
自サイト内の記事にショートコードで自動リンクを設定する関数のソースコードを提供。Post ID、slugで指定でき、アンカーリンクを設定する場合も対応。
-
BackWPupでバックアップ・エラー発生の具体的対処方法事例6
BackWPupその6。エラーが起こったときの対処方法の具体例紹介です。
-
WP Mail SMTPはPHP5.6、7.0系ではメール送信時にエラーが発生。その対処方法。
PHPのバージョンを5.6(7系含む)にアップデートしたらプラグイン WP Mail SMTPを利用してSMTPサーバ経由して送信していたメールが送信できなくなった。その原因と対処方法を詳細解説。
-
Multi RatingでWordPressの口コミサイトを構築
口コミの評価点を投稿する機能に特化。評価点を複数設定することができ、投稿後の評価点を編集することができる数少ないプラグイン。日本語にも対応。おススメ。
-
WordPressのユーザ名を後から変更する方法。adminの使用は危険。
運用中のユーザ名を変更する方法を解説。かつてのデフォルト設定だった「admin」は誰もが使うIDのため非常に危険です。今からでも変更しましょう。
-
Advanced Custom Fields(ACF)のアドオン・ギャラリーの使い方解説
Advanced Custom Fieldsのアドオン・ギャラリーの解説記事。複数の画像を入力できる優れもので、画像のサイズ、容量などでの制限ができ、より厳密な管理が可能。
-
WordPress初心者向け講座・詳細解説データベースとは何か?
データベースとは何か?を言葉の意味の説明なども含めエクセルと比較しながら説明しています。
-
WordPress 任意のファイルを読み込むショートコードの処理
投稿ページにショートコードを利用して任意のファイルを読み込む処理の解説です。