header

PHPでメール送信

(1/2)

PHPにはメール送信関数 mail がある。 日本語でメールを送る場合は、mb_send_mail 関数が便利だ。

0001: <?php
0002: /** sendmail.php
0003:  * PHPでメール送信する
0004:  *
0005:  * @copyright   (c)studio pahoo
0006:  * @author      パパぱふぅ
0007:  * @version     1.0  2005/09/24
0008: */
0009: /**
0010:  * 送信先メールアドレス
0011:  * ※セキュリティ上、固定にすべき!!
0012:  * @global  int $MailTo
0013: */
0014: $MailTo = "yourmail@yourdomain.co.jp";
0015: 
0016: /**
0017:  * 文字列を整形して返す(1行分)
0018:  * @param   String $str  追加する文字列(Shift_JIS,EUC-JP,UTF-8)
0019:  * @param   int $width   折り返す桁数(半角1文字を1桁とする、0なら折り返さない)
0020:  * @return  String 整形後の文字列(EUC-JP、最後に改行文字を付加)
0021: */
0022: function puts_format($str, $width) {
0023:     mb_internal_encoding("EUC-JP");
0024: 
0025:     $str = mb_convert_encoding($str, "EUC-JP", "Shift_JIS,EUC-JP,UTF-8");
0026: 
0027:     //折り返さない
0028:     if ($width <= 0) {
0029:         $dest = $str . "\n";
0030:     //折り返す
0031:     } else {
0032:         $dest = "";
0033:         $w = 0;
0034:         $l = mb_strlen($str);
0035:         for ($i = 0; $i < $l; $i++) {
0036:             $ch = mb_substr($str, $i, 1, "EUC-JP");     //文字コード変換
0037:             $dest = $dest . $ch;
0038:             if ($ch == "\n")    $w = 0;     //改行なら桁数リセット
0039:             else                $w += mb_strwidth($ch);
0040:             if ($w > $width) {
0041:                 $w = 0;
0042:                 $dest = $dest . "\n";
0043:             }
0044:         }
0045:         $dest = $dest . "\n";
0046:     }
0047:     return $dest;
0048: }
0049: 
0050: //初回起動時
0051: if ((isset($_POST["subject"]) == FALSE)) {
0052: $myself = basename($_SERVER["PHP_SELF"]);
0053: 
0054: // ここまでPHPプログラム =======================================================
0055: ?>
0056: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
0057:  "http://www.w3.org/TR/html4/loose.dtd">
0058: <html lang="ja">
0059: <head>
0060: <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" />
0061: <title>メールを送信する</title>
0062: </head>
0063: <body>
0064: 
0065: <h1>■メールを送信する</h1>
0066: <form method="post" action="<?= $myself ?>" enctype="multipart/form-data">
0067: タイトル<br />
0068: <input name="subject" type="text" size="100" /><br />
0069: 内容<br />
0070: <textarea name="message" rows="10" cols="80">
0071: </textarea>
0072: <br />
0073: <input name="SUBMIT" type="submit" value="送信" />
0074: </form>
0075: 
0076: </body>
0077: </html>
0078: 
0079: <?php
0080: // ここからPHPプログラム =======================================================
0081: } else {
0082: mb_internal_encoding("Shift_JIS");
0083: 
0084: $subject = stripslashes($_POST["subject"]);
0085: $message = stripslashes($_POST["message"]);
0086: 
0087: $subject = mb_convert_encoding($subject, "JIS", "Shift_JIS");   //タイトルのみJIS
0088: $message = puts_format($message, 80);
0089: 
0090: mb_language("ja");
0091: mb_internal_encoding("EUC-JP");
0092: 
0093: $res = mb_send_mail($MailTo, $subject, $message);
0094: 
0095: if ($res == FALSE)  echo "送信失敗";
0096: else                echo "送信成功";
0097: }
0098: ?>
0099: