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のメールフォーム解説」の記事を参照してください。
GoogleAdwords
GoogleAdwords
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!
関連記事
-
-
WordPressのカスタムフィールド、カスタム投稿、カスタムタクソノミーとは?
WordPressのカスタムフィールド、カスタム投稿、カスタムタクソノミーの基本的な内容を解説。お薦めのプラグインと編集方法も解説しサンプルソースなども紹介。
-
-
Edit Author Slugで WordPressの不正ログイン・不正アクセスを回避
WordPressのセキュリティ強化に Edit Author Slugを使う理由と設定方法の解説をしています。
-
-
Captchaを使って WordPressのコメントスパム対策をする
コメントスパム対策として入力させない対策の一つとしてCAPTCHAという方法がありそれを簡単に実装できるプラグインCaptchaの解説です。
-
-
Custom Post Type UIでカスタムタクソノミーを設定・バージョン1.4対応解説
カスタムタクソノミーをプラグインCustom Post Type UIを使って設定する方法の解説。バージョンアップにより設定する項目も増え続け、より柔軟な設定が可能に。
-
-
seesaaからWordPressに引越。インストールなど必要な全てを解説
seesaaブログからWordPressへの引越し解説。他のブログにはないseesaaブログからcanonicalとリダイレクトの設定方法を実装!
-
-
WP Reviewを使ってWordPressのレビューサイトを構築
レビューサイトを構築するプラグインです。複数の評価者による評価点投稿やページごとに配色を変更する機能、機能満載なウィジェットなどレビューサイト構築に最適です。
-
-
BackWPupでバックアップ・設定したJobの実行、ファイル一覧
BackWPupその4。バックアップ設定した Jobを実行する方法、ログの一覧、保存されたファイル一覧の解説です。
-
-
WP Basic AuthなどWordPressにBasic認証を設定するプラグインのまとめ
WordPressにBasic認証を設定する方法のまとめ。プラグインを使う方法と.htaccessで設定する方法を紹介。公開側、ログインページをそれぞれ設定できます。
-
-
P3(Plugin Performance Profiler)で負荷が高いプラグインを調査し表示スピードアップ!
まずは正確に現状把握を!P3(Plugin Performance Profiler)を使ってプラグインの処理時間を確認!簡単操作で対応すべきプラグインが一目瞭然になります!
-
-
WordPressのカテゴリ単位・フォルダ単位でBasic認証を設定する方法
カテゴリ単位でBasic認証を設定する方法の解説。WordPressのカテゴリはフォルダの実態がないですが、実は簡単な方法でプラグインも使わずにBasic認証を設置できます。