「必要な関数などについて詳しく知りたい」
「メール送信の仕組みはどうなっているのだろう…」
このように考える方も多いのではないでしょうか。
実際、PHPを活用することでメール送信を行うことができ、開発現場でもPHPを使ったメール処理の構築が多いです。
しかし、どのような関数を使って、どのような仕組みで動いているのかはご存知でしょうか?
今回の記事で、PHPを使ってメール送信する方法や必要な関数などについて解説をしていきますので、ぜひ参考にしてみてください。
PHPを使ってメールを送信する方法
- mail関数
- mb_send_mail関数
PHPでメールを送信するには、上記の2つの関数を使用して送信することができます。
まずはこの2つの関数について覚えて、使用場面を考えてみましょう!
mail関数
mail関数を使う場合は、mail(宛先, 件名, メッセージ, ヘッダ)というフォーマットでメール送信をすることができます。
1 |
bool mail (string $受信者, string $タイトル, string $本文[, string $追加ヘッダ[, string $追加パラメータ ]]) |
このフォーマットをまずは覚えておきいましょう。
「$受信者」や「$タイトル」などの引数について、詳しく解説をしていきます。
受信者
ここでメールの受信者を指定できます。指定できるのは以下のような形式で、もし受信者が複数の場合は、カンマ区切りで複数指定することが可能です。
- xxx@example.com
- XXX<xxx@example.com>
タイトル
ここではメールのタイトルを指定することができます。ただし、タイトルを改行をすることはできません。
本文
メールの本文を指定します。もし改行する場合は、改行コードであるCRLF(rn)を使用することで改行が可能です。また、各行の長さが70文字を超えないようにしましょう。
追加ヘッダ
ここでは「From」や「Cc」など、追加したいヘッダを指定します。複数のヘッダを追加する場合、改行コードであるCRLF(rn)を使用します。「From」ヘッダは必須となっているのですが、もし「php.ini」にデフォルト値を事前に指定している場合は、省略して記述することができます。
追加パラメータ
これは、もしメール送信プログラムに追加したいオプションがある場合に使用します。
mail関数は、メールの送信に成功すれば「TRUE」を、失敗すれば「FALSE」を返します。1点覚えておきたいのが、実際に受信者に届いたかどうかではない、ということに注意しましょう。
では例として、以下の書き方をみてみましょう。
1 2 3 4 5 6 7 8 |
<?php $to = "to@example.jp"; $subject = "Subject MAIL"; $message = "Hello! Subject MAIL."; $headers = "From: from@example.jp"; mail($to, $subject, $message, $headers); ?> |
今回の例ではヘッダに 「From:」 を使っていますが、「CC:」 や「BCC:」 なども指定することが可能です。
mb_send_mail関数
mb_send_mail関数を使う場合は、mb_send_mail(宛先, 件名, メッセージ, ヘッダ)というフォーマットでメール送信をすることが可能です。
1 |
bool mb_send_mail(string $受信者, string $タイトル, string $本文[, string $追加ヘッダ[, string $追加パラメータ ]]) |
mail関数と同様に、mb_send_mail関数のフォーマットも覚えておきましょう。
なぜ「mb_send_mail関数」を使用するかというと、「mail関数」でメールを送信すると日本語が文字化けしてしまう可能性があるからです。そこでmb_send_mail関数を使うことで、日本語などのマルチバイト文字を扱ってメールの送信を行うことができるようになります。
引数や戻り値は、mail関数と同じです。mb_send_mail関数で日本語のメールを送る場合は、最初に以下の2行を記述しましょう。
1 2 |
mb_language("Japanese"); mb_internal_encoding("UTF-8"); |
日本語でメールを送る機会が多いと判断できれば、mb_send_mail関数の方を積極的に利用するようにしましょう。
メールフォームを作成して送信する方法
ここで少し補足として、HTMLでメールフォームを作成してメールを送信する方法について解説をしていきます。
例えばHTMLで、以下のようなメールフォームを作成します。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<html> <head> <meta charset="utf-8" /> </head> <body> <form action="./mail.php" method="post"> <p>送り先</p><input type="text" name="to"> <p>件名</p><input type="text" name="title"> <p>メッセージ</p><textarea name="content" cols="50" rows="10"></textarea> <p><input type="submit" name="send" value="送信"></p> </form> </body> </html> |
HTMLのフォームを作成したら、メールを送信するプログラムをPHPで作成します。ファイル名は HTMLでも指定した「mail.php」とします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
<html> <head> <meta charset="utf-8" /> </head> <body> <?php mb_language("Japanese"); mb_internal_encoding("UTF-8"); $to = $_POST['to']; $title = $_POST['title']; $message = $_POST['message']; $headers = "From: from@example.com"; if(mb_send_mail($to, $title, $message, headers)) { echo "メール送信成功!"; } else { echo "メール送信失敗。"; } ?> </body> </html> |
これで、メールフォームからメールの送信が可能となります。
HTMLメールを送信する方法
これまでのメール送信方法は、テキストのみでのメール送信方法でした。
しかし、メールはテキストだけでなく、装飾文字などを使った「HTMLメール」もあります。
ここでは、PHPでHTMLメールを送信する方法ついて解説をしていきます。
HTMLメールを送信するには、mailもしくはmb_send_mail関数を使い、引数の「$追加ヘッダ」にContent-typeヘッダを追加し、「text/html」を指定します。
例として、記述方法は以下の通りとなります。
1 2 3 4 5 6 7 8 9 10 |
<?php $to = "to@example.jp"; $subject = "Subject MAIL"; $message = "<html><body><h1>Subject MAIL</h1></body></html>"; $headers = "From: from@example.jp"; $headers .= "rn"; $headers .= "Content-type: text/html; charset=UTF-8"; mail($to, $subject, $message, $headers); ?> |
まとめ
いかがでしたか?
この記事では、
について解説をしていきました!
メール送信をする場合、必要な関数は「mail関数」と「mb_send_mail関数」です。日本語でのメール送信をする場合は、「mb_send_mail関数」を使用しましょう。
PHPはメール送信のシステムには欠かせないプログラミング言語となっているため、需要が高いです。
しっかりと習得して、現場で活用していきましょう!