<?php

include_once "./jcode.phps";

/********************************************************************
 *
 *【関  数】attach_mail
 *
 *【機  能】添付ファイル付きでメールの送信
 *
 *          ※ソースの文字コードはEUC-JPとする(要jcode.phps)
 *          ※改行コードはLFとする(sendmailが自動でCRLFに変換するはず)
 *
 *【引  数】$to          : 送信先アドレス
 *          $subject     : 件名
 *          $body_text   : メッセージ本文
 *          $file_path   : 添付ファイルのパス(配列)
 *          $return_path : エラーメール送信先アドレス
 *          $header      : 追加ヘッダ(FromやX-Mailerなど)
 *
 *【戻り値】mail()関数の戻り値
 *
 *【作  成】2001.11.19 TOMO <groove@spencernetwork.org>
 *
 *【更  新】2001.11.23 複数ファイルを添付可能にした
 *
 ********************************************************************/
function attach_mail($to$subject$body_text$header$return_path$file_path = array())
{
    
// 文字コードの変換(EUC -> JIS)
    
$subject   JcodeConvert($subject,   13);
    
$body_text JcodeConvert($body_text13);

    
// SubjectをBASE64エンコード
    
$subject   '=?ISO-2022-JP?B?'.base64_encode($subject).'?=';

    
// マルチパートの境界に使用するテキスト
    // 本文にでてこないか一応チェック
    
$str_text "\n" $body_text "\n";
    do {
        
$boundary "---MULTI_PART_ATTACHMENT_" uniqid(rand()) . "---";
        
$expr     "\n--" $boundary "(--)?\n";
    } while (
ereg($expr$str_text));

    
// ヘッダ追加
    
$header .= "MIME-Version: 1.0\n";

    if (
is_array($file_path) && $file_path) { // 添付ファイルがある場合

        // マルチパートのヘッダ
        
$header .= "Content-Type: multipart/mixed;\n boundary=\"" $boundary "\"\n";

        
// テキスト本文
        
$body "--" $boundary "\n"
              
"Content-Type: text/plain;\n"
              
" charset=iso-2022-jp\n"
              
"Content-Transfer-Encoding: 7bit\n"
              
"\n"
              
$body_text
              
"\n";

        
$file_count count($file_path);
        for (
$i 0$i $file_count$i++) {

            
// ファイルからデータ読み込み
            
$fp = @fopen($file_path[$i], "r");
            if (!
$fp) { // オープンに失敗したらスキップ
                
continue;
            }
            
$body_attach fread($fpfilesize($file_path[$i]));
            
fclose($fp);

            
// 添付データをBASE84エンコード、76文字で改行
            
$body_attach chunk_split(base64_encode($body_attach), 76"\n");

            
// 添付ファイル名取得
            
$filename basename($file_path[$i]);

            
// 添付データ追加
            
$body .= "--" $boundary "\n"
                  
.  "Content-Type: application/octet-stream;\n"
                  
.  " name=\"" $filename "\"\n"
                  
.  "Content-Disposition: attachment;\n"
                  
.  " filename=\"" $filename "\"\n"
                  
.  "Content-Transfer-Encoding: base64\n"
                  
.  "\n"
                  
.  $body_attach
                  
.  "\n";
        }

        
$body .= "--" $boundary "--\n";

    } else { 
// 添付無しの普通のメールの場合

        
$header .= "Content-Type: text/plain; charset=iso-2022-jp\n"
                
.  "Content-Transfer-Encoding: 7bit\n";
        
$body $body_text;
    }

    
// 送信
    
return mail($to$subject$body$header"-f$return_path");
}
?>