お問い合わせなどのメールフォーム。今となっては当たり前の技術ですが仕組みを知っておこうと思って調べました。
メールフォームはPHPを使うのでがサンプルを作成しました。
mb_send_mailでメールを送信する
実際に送信されますのでご注意!!
文字化けしないように送信前に言語設定をする
文字化けしないように「mb_send_mail」で送信する前に使用言語と内部エンコーティングを設定する
mb_language()関数は、現在の言語を設定します。第1引数に「ja」を指定して日本語使用を設定する。
mb_internal_encoding()関数は、内部文字エンコーディングを設定あるいは取得する 。下記の例ははエンコーディングにEUC-JPを指定してる。
メールのヘッダーで日本語を使用する場合の処理
メールのヘッダーで日本語を使用したい「mb_encode_mimeheader」を使用してメールのMIMEヘッダに設定する文字列をエンコードする。
基本的にはISO-2022-JPのBase64でエンコードすればいいらしいので引数は対象文字列だけを指定しても問題無いと思います。と「PHPBook.jp」で書かれていました。
要はヘッダーで日本語を使用したい場合はこの関数を使用すればいいってこと?
ちなみにこの関数を使用しないでヘッダーに日本語を入れて送信してみたら文字化けしました。
ちなみにメールにヘッダは通常は設定しますが、設定しない場合は「オムニオ・ラボ」の「mb_send_mail」に書いてあります。
mb_send_mail関数を利用して送信する
これまでの設定を行った上で「mb_send_mail」を使用するとこ。この関数の引数については下記。
メールが送信されると「true」が返され、送信が失敗すると「false」が返ってくるのでその戻り値を変数「result」で受け取ってます
,<メールの件名(subject)>,<メールの本文>,<ヘッダー情報>);
?>
下記にサンプルを記述しました。フォームからpostでデータを受け取りメールを送る例です(送信先アドレスは適当です)
送信が成功したら「成功」と表示するようになってる
".$gender."
".$textarea;
$header="From :".mb_encode_mimeheader('ここはヘッダーだよ');
//echo $naiyou;
$result=mb_send_mail("sample@test.jp","お問い合わせ内容",$naiyou);
if($result){echo "成功"; }else{echo "失敗";}
?>