PHPを利用してメールを送る

フォームメールを考え方

 ホームページを見ていると、メールによるお問い合わせのページがあります。これを実現する、一番簡単な方法は、リンクとしてメールアドレスをHTMLに埋め込むことです。
例えば
<A href="mailto:aaa@aaa.jp?Subject=お問い合わせの件">問い合わせ</A>
などにすれば、ユーザーが利用しているメールソフトが起動して、メールを送ることが出来ます。これはこれで便利ですが、2つの問題があります。
・メールソフトが正しく作動するかわからない。
・メールアドレスをHTMLに組み込むと、メールアドレスを探す検索ロボットに回収されて迷惑メールを呼ぶことになりかねない。

そこで、PHPのようなスクリプトからメールを送ることでメールアドレスを公表せずに問い合わせを受け付けることが可能になります。

ここではいきなり、関数を紹介します。
mb_send_mail(あて先,タイトル,本文);
プログラム中に、この1行を利用するだけで、”あて先”へメールを送ります。
後は難しいことはありません。フォームから、文章を受け取って、受け取った文字列をこの関数へ通せばよいのです。

それでは、スクリプトです。
【mailto.php】(いたずら防止のため、完成版はありません)

 さて、あまり解説することはありません。次のような手順ですので、照らし合わせてください。 ※メールは、Webサーバーのsendmail機能を使います。ここで紹介しているXSAS+PHPエディタの開発環境はインターネット接続の設定をしていないため、利用できません。

フォームからの入力の注意点

 今回の例題では、ユーザーが入力した値が、メールアドレスにふさわしい形式をしているのか何もチェックしていません。このような単純な例ですと良いのですが、アンケートや、会員登録など重要な要素を多く含む場合は、エラー防止、いたずら防止のためにも、入力内容のチェック機能をつけるべきです。

 このチェックは、主に【if(条件){処理}】と言う構造で行いますが、数値であればともかく、文字列の条件を示すのは厄介です。そこで、文字列の条件を指定する方法の1つに正規表現と言うのを使います。多くの場合は、
【if( mb_ereg(正規表現)、文字列 ){処理}】
と言う書き方をして判定します。
正規表現の説明は別のサイトに任せますので、ここでよくある例を紹介します。解りにくいので、そういう判断が出来る、おまじないみたいなものが存在すると思ってください。

if(mb_ereg(”^[a-zA-Z].*@[\.-_a-zA-Z0-9].+\.[a-zA-Z]+$”,文字列){処理}
この場合、アルファベットから始まる文字列で、途中に@があり、更に英数字の文字列があり、ドット+アルファベットがとうい形で終わる文字列。
と言う意味です。つまり、メールアドレスに準じた形式であることを調べることが出来ます。他にも、電話番号の形に合わせるとか、ホームページのURLにあわせる、文字の半角全角をチェックするなど、さまざまな使い道がありますが、通常思いつくような例は、色々なホームページに掲載されているので、おまじないとして、コピー&ペーストして使うと良いでしょう。

正規表現は、プログラマーにとって必須ではありませんが、ユーザーからのアクセスが、正しいかどうかと言う判断は、なんらかの方法で実現する必要があります。

<プログラミングの手順>-Top-<PHPとデータベース>