WordPressのメールフォームはwp_mail()関数でメール送信。スパム対策も
2015/12/27
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の記事編集で文字が自動変換される要注意な文字列
記事を編集する際、入力した文字とは違う表示のされ方をする文字、アポストロフィ、ダブルクォート、円マーク、三点リーダ(…)など、その解説と対応方法です。
-
自サイト内のリンクをショートコードで指定する・アンカーリンク対応版
自サイト内の記事にショートコードで自動リンクを設定する関数のソースコードを提供。Post ID、slugで指定でき、アンカーリンクを設定する場合も対応。
-
WordPressで ¥円マークが \バックスラッシュになる原因と対処方法
円マークがバックスラッシュに変換される。その原因と対処方法を解説します。原因はCSSでのフォント指定に欧文フォントも含まれるため欧文フォントで表示されること。
-
タクソノミーの一覧をショートコードで編集・ソート機能付き・wp_list_categories
カスタムタクソノミーのターム一覧をショートコードで編集する方法の解説です。Category Order and Taxonomy Terms Orderを利用してソート機能を追加したバージョンです。
-
ショートコードで簡単解決!カスタムフィールドでソート、抽出条件設定方法
ショートコードを使って固定ページや投稿に特定のカテゴリ一覧を編集する処理に、ソート条件、抽出条件も設定できる処理を作成。カスタムフィールドも条件に利用可。
-
カスタムタクソノミーのターム一覧をウィジェットにショートコードで編集
カスタムタクソノミーに属するターム(カテゴリ)の一覧を wp_list_categories()関数+ショートコードでウィジェットに編集するサンプルプログラムです。
-
WordPressの一覧ページのテンプレートの種類とファイルの設定
ファイル名に従って一覧ページのテンプレートは選択される。ルールに従ってファイル名を付けることで任意のカテゴリ、タクソノミーごとのテンプレートを指定可能。
-
WordPressプラグイン開発・ショートコード内でincludeするときにはob_start、ob_get_contents
WordPressのプラグインやショートコードの関数作成でテンプレートをincludeする際に利用するob_start関数、ob_get_contents関数を紹介。
-
WordPressプログラム全体で定数や変数を利用する場合の設定方法
WordPressで関数を追加するときなど、全体で同じ変数を使いたいと思う場面の対処方法です。変数を記述する関数はfunctions.php、wp-config.phpのいずれか。
-
WordPressでダブルクォートなどの文字が自動変換?原因と対処方法
ダブルクォート、シングルクォート、HTMLタグなどが自動変換関数によって入力と違う形で表示されます。原因を2つの関数ごとに説明し、対応方法を3パターン提示します。