• WebCamp_インタビュー
    【WebCamp卒業生インタビュー】1ヶ月でRubyをゼロから学び、Webエンジニアとして転職!
    2018.01.15
  • WebCampPro_インタビュー
    未経験から上京し、エンジニアとしてチームラボグループに転職!【WebCampPro卒業生インタビュー】
    2018.03.10
  • WebCamp_インタビュー
    「1カ月頑張ればこの先が見えてくる」地元メディアを立ち上げたママさん
    2017.07.20
  • WebCamp_インタビュー
    【WebCamp受講生インタビュー】起業準備中にCEOが気がついたプログラミングスキルの重要性とは?
    2017.12.25
  • WebCamp_インタビュー
    「自信の持てるスキルを得たい!」内定辞退した女子大生がプログラミングを学習したワケ。
    2018.04.28
  • WebCampPro_インタビュー
    自分で稼ぐ力をつけるため、新卒5年目の営業マンがエンジニアに転職!【WebCampPro転職者インタビュー】
    2018.02.02
  • WebCampPro_インタビュー
    未経験でも寿司職人からWebデザイナーになった!ホスピタリティでスクールを支える宮脇トレーナー
    2017.05.26
  • WebCamp_インタビュー
    “未経験”でもたった1ヶ月で営業からエンジニアとして転職!『WebCamp』受講者インタビュー
    2017.10.04
  • WebCampPro_インタビュー
    未経験31歳からエンジニア転職を実現【実際に聞いてみた】
    2017.04.01
  • WebCamp_インタビュー
    時間や場所にとらわれず自由に働くために必要なスキルとは?【WebCamp卒業生インタビュー】
    2018.01.26
  • WebCamp_インタビュー
    【卒業生インタビュー】台湾で月間100万UUの訪日旅行メディアを手掛けるCEOが、プログラミングを学んで得たものとは?
    2018.01.15

◆当サイトで人気のプログラミング教室のおすすめランキングはこちら!
プログラミングは独学では非効率で、時間を無駄にするリスクがあります。効率的なカリキュラムで学べるスクールを受講しましょう。

WEBCAMP【マンツーマンサポート】1ヶ月短期集中でプログラミングを学ぶスクール
1ヶ月通い放題・メンター常駐の教室環境でプログラミングを学びたい方!
TechAcademyオンラインで開講しているプログラミングスクール
オンラインでどこでも学べる!/教室に行くのが忙しい人でも安心!
Tech Camp教養としてのITスキルを学べるスクール
Webデザイン/AI(人工知能)/IOS/Androidアプリ制作/VRを学びたい方!
WEBCAMP PRO転職保証付き!エンジニアとして転職したい人におすすめ!
未経験からプロのエンジニアへ3ヶ月で転職する為のスクールです!
12月生募集中!当社人気の転職保証コース
プログラミング学習から転職成功まで導く、当社人気のWebCamp Proコース。
11月生は満員となっております。12月生募集に向け、お早めの申込みをオススメします。
プログラミング未経験でもエンジニア転職を絶対成功させたい
スキルを身に着けて人生を自ら切り開きたい
上記にあてはまる方は、ぜひご検討ください!

PHPの学習を進めている方で、メールフォームを作成してみたい、という方もいるのはないでしょうか?

今回の記事では、PHPでメールフォームを作る方法を紹介していきます。

はじめに

HTMLには、「mailto:」というのがあります。

<a href="mailto:aaa@aaa.jp">メールはこちらへ</a>

 

のような形で記述することで、メーラーが自動的に立ち上がり、メールを送る事ができますが

htmlファイルに送信先アドレスが丸見えなので、これがスパムの標的になります。

そのため、メールでの問い合わせは、formとphpのようなスクリプト言語で作られたメールフォームを
使用するのがいいと思われます。

PHPではメール送信用の関数が用意されているため、メール送信プログラムを簡単に作成することができます。

メール送信に関する注意点(迷惑メール対策)

多くのプロバイダでは、迷惑メールが大量に送信されるのを防ぐための対策が行われています。
その影響で、WindowsにインストールしたPHPからはメールが送信できないことがあります。
このページのプログラムを実行した際に以下のようなメッセージが表示される場合、メールの送信に失敗しています。

Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set()

 

プロバイダから回避方法が告知されていることもありますが、環境によって設定方法が異なるため、ここでは触れません。
メールが送信できなければ、手元の環境ではなく、レンタルサーバにアップロードしたりして動作確認をするなどしてください。
(不正アクセスを防ぐため、動作確認が終わったらアップロードしたファイルを削除してください。)
今回の解説では、メールの送信ができる環境であることを前提としています。

【WebCamp卒業生インタビュー】1ヶ月でRubyをゼロから学び、Webエンジニアとして転職!
2018-01-15 13:23
今回の記事では、WebCampで1ヶ月間Rubyを学習し、Webエンジニアとして転職した卒業生の田中さんにお話を伺いました。 <プロフィール> 田中 デニス 昭彦さん(...

メール送信に関する注意点(文字コード)

文字コードとは、コンピュータで文字を利用するために各文字に割り当てられたコード番号のことです。
例えば A は文字コード 41、B は文字コード 42、のように決められています。

現在インターネットでは、UTF-8・JIS・Shift-JIS・EUC-JP といった文字コードがよく利用されていますが
文字コードによって日本語に割り当てられているコード番号が異なります。

例えば「あ」の文字コードは
・UTF-8 では E38182
・Shift-JIS では 82A0
・EUC-JP では A4A2

と、異なる文字コードが割り当てられています。ですので何も考えずに文字コードを混在させると、文字コード
を判別できずに文字化けすることがあります。

現在は色々な文字コードが利用されていますが、UTF-8 が使われる割合が増えています。
UTF-8 は Unicode という文字コードの一つです。
Unicode は、世界中で使われているすべての文字を、共通の文字コードで利用できるようにするための規格です。

特にこだわりが無ければ、文字コードは UTF-8 にしておきます。
今回のメール送信でも文字コード UTF-8 で作業します。

なお、Shift-JIS でPHPプログラムを作成するのは
・文字コード 5C を含む文字を正しく表示できない
・正規表現が正しくマッチしないことがある
・一部のライブラリが正しく動作しないことがある
・データベースに Shift-JIS の利用を宣言すると、セキュリティホールが発生することがある

という問題があるのでお勧めできません。

mail関数

PHPでのメールの送信は mail 関数で行うことができます。

<?php

if (mail("example@example.com", "TEST MAIL", "This is a test message.", "From: from@example.com"))
{
echo "メールが送信されました。";
} else {
echo "メールの送信に失敗しました。";
}

?>

 

これで「example@example.com」に対して、「TEST MAIL」という件名で、「This is a test message. 」という本文のメールが送信されます。
送信元のアドレスは from@example.com になります。

mail 関数は処理の結果として、メールの送信に成功すれば TRUE を、メールの送信に失敗すれば FALSE を返します。
つまり、メール送信処理を if の条件にすることにより、「メールの送信が実行できたかどうか?」を判断しています。

文字化け対応(mb_send_mail関数)

mail 関数でメールを送信すると、日本語が文字化けしてしまう可能性があります。
ですので、通常は、日本語に対応した mb_send_mail 関数を使用します。具体的には以下のようになります。

 mb_send_mail(送信先アドレス,題名,本文,送信元アドレス);

 

<?php

if (mb_s end_mail("example@example.com", "テストメール", "これはテストです。", "From: from@example.com"))
{
echo "メールが送信されました。";
} else {
echo "メールの送信に失敗しました。";
}
?>

 

これで「example@example.com」 に対して、「テストメール」という件名で、「これはテストです。」という本文のメールが送信されます。

ちなみに、本文中で改行したければ \n と書きます。

それでも文字化けしている場合、mb_language 関数と mb_internal_encoding 関数で言語と文字コードを指定してみてください。

 <?php

mb_language("Japanese");
mb_internal_encoding("UTF-8");      if (mb_send_mail("example@example.com", "テストメール", "これはテストです。", "From:
from@example.com")) {
echo "メールが送信されました。";
} else {
echo "メールの送信に失敗しました。";
}
?>

 

これらはPHPの言語設定と文字コード設定を調整する命令で、今回は「言語は日本語」「文字コードはUTF-8」に設定しています。

これらの命令は、PHPの設定ファイル(php.ini)で言語設定や文字コード設定が適切に行われていれば不要です。
ですがレンタルサーバなどでは設定がされていなかったり、他の言語や文字コードが設定されていて変更できないことがあります。
そのような場合、メール送信前にこの命令を書いておけば、文字化けを防ぐことができます。

“未経験”でもたった1ヶ月で営業からエンジニアとして転職!『WebCamp』受講者インタビュー
2017-10-04 10:26
今回の記事では、未経験からWebCampを1ヶ月受講し、その後エンジニアとして転職をした喜田さんにお話を伺いました。 <プロフィール> 喜田 大介 さん (28歳) 大学時代はプ...

フォームからのメール送信

フォームからデータを入力すると、PHPでメールが送信できるプログラムを作成してみます。今回は、以下のHTMLでフォームを作成します。

 <html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>sample</title>
</head>
<body>
<form action="send.php" method="post">
件名:<br />
<input type="text" name="subject" size="30" value="" /><br />
送信者名:<br />
<input type="text" name="name" size="30" value="" /><br />
メールアドレス:<br />
<input type="text" name="mail" size="30" value="" /><br />
本文:<br />
<textarea name="message" cols="30" rows="5"></textarea><br />
<br />
<input type="submit" value="送信する" />
</form>
</body>
</html>

 

ファイル名は form.html としておきます。これをブラウザで表示すると、以下のように表示されます。

このフォームからメールを送信する場合、form.html と同じフォルダに send.php を作成し、以下の内容を書きます。

<?php

$message = "名前:" . $_POST["name"] . "\n本文:" . $_POST["message"];

if (!mb_send_mail("example@example.com", $_POST["subject"], $message, "From:
" . $_POST["mail"])) {
exit("error");
}

?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>sample</title>
</head>
<body>
<p>メールが送信されました。</p>
</body>
</html>

 

これで form.html にブラウザからインターネットアクセスし、送信ボタンを押すと「example@example.com」にメールが送信されます。

if (!mb_send_mail(~)) { ~ } は「メールが送信できなければ」という条件です。
mb_send_mail 関数は処理の結果として、メールの送信に成功すれば TRUE を、メールの送信に失敗すれば FALSE を返すため
条件の先頭に ! を付けることにより、メールの送信に失敗したときにエラーメッセージを表示させることができます。

exit() はプログラムを終了するための命令です。
カッコの中に文字列を指定すると、その文字列を出力してからプログラムを終了します。
これにより、メールが送信できなかった場合は メールが送信されました。 の文字列が表示されなくなります。

さいごに

PHPでのメールフォーム作成、いかがだったでしょうか。
実際のページでは、入力チェックやエラーロジックなどまだ実装すべきコードがありますので段階的に覚えていってください。
このようにPHPにはもともと便利な関数が多数あります。
PHPマニュアルを眺めるだけでも有益な情報が得られたりするので、是非興味がある方はご覧になってください。

WebCamp・Webスクについて

WebCampは1ヶ月でプログラミング・Webデザインスキルを学ぶ通い放題のプログラミングスクールです。Webスクは半年間で未経験から即戦力エンジニアを育成する転職保証付きのプログラミングスクールです。

2つのサービスを運営するインフラトップでは、「学びと仕事を通して人生を最高の物語にする」という理念で会社を経営しています。

キャリアアップを目指す方は、この機会に私達と一緒にプログラミングを学んでみませんか?

12月枠も残りわずか当社人気の転職保証コース
プログラミング学習から転職成功まで導く、当社人気のWebCamp Proコース。
11月受入枠は満員となっております。12月枠に向け、お早めの申込みをオススメします。
プログラミング未経験でもエンジニア転職を絶対成功させたい
スキルを身に着けて人生を自ら切り開きたい
上記にあてはまる方は、ぜひご検討ください!

▼未経験から1ヶ月でWebデザイン・プログラミングを学びたい方はこちら!

▼ついに開講!オンラインでWebデザインを学びたい方はこちら!

【インタビュー】コツコツ独学×スクールで実践。未経験からエンジニアに転職!

プログラミング未経験から、書籍での独学期間で基礎を固め、スクールを効率的に活用し、見事エンジニア転職を成功させたWebCamp受講生にお話を伺いました。

「低予算でも効率的にエンジニア転職のスキルをつける方法は?」

「未経験でも本当にエンジニアになれるの?」

といった疑問を持っている方は、是非この記事を読んでみてくださいね!

コツコツ独学×スクールで実践。未経験からエンジニアに転職!【WebCamp卒業生インタビュー】
2018-03-22 23:28
今回の記事では、独学でPHPを1年半学習し、その後WebCampを受講して未経験からエンジニアへと転職された佐々木さんにお話を伺いました。 <プロフィール> 佐々木 祐樹 さん(2...
関連キーワード
学習の関連記事
  • 独学でプログラミングを学ぶのは間違い!?今日から挫折しない3つの学習方法
  • 【誰でもわかる!】エンジニアの仕事内容を徹底解説
  • 初心者でも一瞬でわかるプログラミングの考え方・思考法
  • エンジニア必見!エンジニアが成長できるブログ紹介
  • エンジニアとは?仕事内容、年収、将来性を徹底解説
  • 【Rails入門説明書】find、find_byについて解説
おすすめの記事
Ruby
常に必要というわけではありませんが、プログラムを作る上で、日時を扱うことは少なくありません。特にビジネスで使用するプログラムであれば、必要な...