落書きノート

ふと自分が気になった事を書いてます

PHP メール送信フォーム

最後の問題です。メール送信フォームの問題でした。ちゃんとメール送信出来ます。自分で書いたのは以下の様な感じです。

<html>
<head>
  <title>メールフォーム</title>
</head>
<body>
  <form action="./ex-6-6.php" method="post">
    <table>
      <tr>
        <td>タイトル:</td>
        <td><input name="title" type="text" placeholder="タイトル" /></td>
      </tr>
      <tr>
        <td>宛先:</td>
        <td><input name="to" type="text" placeholder="宛先" /></td>
      </tr>
      <tr>
        <td>メール本文:</td>
        <td><textarea name="ta" type="textarea" placeholder="メール内容" rows="5" cols="50"></textarea></td>
      </tr>
      <tr>
        <td></td>
        <td><input type="submit" value="送信" /></td>
      </tr>
    </table>
  </form>
  <?php
  if(isset($_POST["title"]) && isset($_POST["to"]) && isset($_POST["ta"])){
    if(!mb_send_mail($_POST["to"], $_POST["title"], $_POST["ta"], "From: " . $_POST["to"])){
      print "送信失敗しました。";
      exit("エラー");
    }else{
      print "送信しました。";
    }
  }
   ?>
</body>
</html>

まあ、これでも問題無いのですが、Windowsだと文字化けしそうです。Macでは文字化けしませんでした。

一方、解答は以下の様な感じです。

<html>
<head>
  <title>メールフォーム</title>
</head>
<body>
  <form action="./ex-6-6-a.php" method="post">
    <table>
      <tr>
        <td>タイトル:</td>
        <td><input name="title" type="text" placeholder="タイトル" /></td>
      </tr>
      <tr>
        <td>宛先:</td>
        <td><input name="to" type="text" placeholder="宛先" /></td>
      </tr>
      <tr>
        <td>メール本文:</td>
        <td><textarea name="ta" type="textarea" placeholder="メール内容" rows="5" cols="50"></textarea></td>
      </tr>
      <tr>
        <td></td>
        <td><input type="submit" value="送信" /></td>
      </tr>
    </table>
  </form>
  <?php
  if(isset($_POST["to"]))
    $to = $_POST["to"];

  if(isset($_POST["title"]))
    $title = $_POST["title"];
  else
    $title = null;

  if(isset($_POST["ta"]))
    $msg = $_POST["ta"];
  else
    $msg = null;

  $hdr = "Content-Type: text/plain;charset=ISO-2022-JP";
  mb_language("ja");

  $title = mb_convert_encoding($title, "JIS", "UTF-8");
  $msg = mb_convert_encoding($msg, "JIS", "UTF-8");

  if(isset($_POST["to"])){
    if(mb_send_mail($to, $title, $msg, $hdr))
      print "送信しました。 \n";
    else
      print "送信エラーです。\n";
  }
   ?>
</body>
</html>

20160210191240

PHP入門Ⅰ Webアプリケーション作成例題集
(2015-08-12)
売り上げランキング: 167,085