メールサーバーを立ち上げたら、メールの送信テストを兼ねてメール送信プログラムの作成をする。

PHPを使用。

今回はメール送信テストという事で入力チェックや集計などの機能は全て排除。

HTML側で入力されて送られてきたデータをPHPで受け取り、指定のアドレスへ送信。この機能のみ。



まずはHTML


<html>
<head>
<title>メール送信</title>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
</head>
<body>

<form action="formmail.php" method="post">
<table border="1" width="600" cellpadding="2" cellspacing="0">

<tr>
<td>名前</td>
<td><input type="text" name="name" size="40" maxlength="20"></td>
</tr>
<tr>

<td>年齢</td>
<td><input type="text" name="age" size="2" maxlength="2">歳</td>
</tr>

</table>
<input type="reset" value="リセット" class="submit">
<input type="submit" value="送信" class="submit">
</form>
</body>
</html>


名前を年齢のみ入力して送信する

注意点は、charsetがShift_JISである事。

送信形式がPOSTである事。

名前はname年齢はageという名前で送信される

今回はPHP側で入力チェックをしない替わりにmaxlengthで文字の長さを制御

呼び出すPHPの名前がformmail.phpである事


以下formmail.phpファイルのコード

<?php

// カレントの言語を日本語に設定する
mb_language("ja");
// 内部文字エンコードを設定する
mb_internal_encoding("SJIS");

//フォームより入力された値の受け取り
$name = $_POST["name"];
$age = $_POST["age"];

//送信内容を作成
$data = $name.$age;

//メール送信
mb_send_mail("xxx@xxxx.com ","送信テスト", $data);

?>


最初のmb_languageとmb_internal_encodingで文字コードの指定をしている

POSTで送信されてきた各値の受け取り

受け取ったデータを結合して$dataとしておく

mb_send_mailで指定のアドレスへ送信テストという題名で$dataというデータを送る。


入力チェックや集計機能、ログ保管などの機能は今回は取り除いてシンプルに。

PHPはmb_send_mail関数やmail関数でメールが送信出来る。


自宅サーバーを立ち上げ、しばらくはメールサーバーはちょっとスパムなど怖かったので


立ちあげずにいたが、そのうち必要になるだろうしやってみた。


出来るけどやらないと、出来ないではまた違ってくるし。



んで、予想どおりコケた。


参考書読みながらメール送信プログラムを作成し、送信から受信まではすんなり出来たのだが、


受信したメールが文字化けしてる。。。


mb_convert_encodingで文字コード変換して送ってみたがまだ文字化けしてる。


非常にまいった。


どの文字コードにしてもまったく直らないので、mb_send_mailを辞めて、mail関数にしてみた。


するとあっさり文字化け解消。



添付ファイルがあるメールはmail関数を使うのがいいらしい。


しかし通常mailよりmb_send_mailの使用が推奨されているので、意地でもmb_send_mailで成功させてやろうと


いろいろ調べてみた。


結果。



プログラムに


mb_language("ja"); // カレントの言語を日本語に設定する

mb_internal_encoding("SJIS"); // 内部文字エンコードを設定する

この2行を追加で成功。


特にmb_convert_encodingも必要ないし、とにかくシンプルでわかりやすくて満足!


mb_internal_encodingで指定する文字コードは私はSJISでコーディングしているのでSJIS

他の場合は変えてやる必要がある。


プログラムの文字コードが分からない場合、PHPプログラムを実行した時、ブラウザの

表示->エンコード

でそのプログラムの文字コードが分かる。


これでメール送信関係の開発に取りかかれる~よかった~