最近要開發一個可含附件的PHP程式,以下是我參考的內容


/*
寄信程式
$from : 寄件人
$mailto : 收件人
$subject : 信件標題
$msg : 信件內容
$filename : 附加檔案
*/

function SendMail($from,$mailto,$subject,$msg,$filename=''){ // 傳送 mail
$subject = '=?utf-8?B?'.base64_encode("$subject").'?='; // 標題加密(防亂碼)
$boundary = uniqid( ""); // 產生分隔字串
// 設定MAIL HEADER
$headers = '';
$headers .= 'MIME-Version: 1.0'."\r\n";
$headers .= 'Content-type: multipart/mixed; boundary="'.$boundary.'"; charset="UTF-8"'."\r\n"; //宣告分隔字串
$headers .= 'From:'.$from."\r\n"; // 設定寄件者
$headers .= 'X-Mailer: PHP/' . phpversion()."\r\n";
// 信件內容開始
$body .= '--'.$boundary."\r\n";
$body .= 'Content-type: text/plain; charset="UTF-8"'."\r\n";// 信件本文header
$body .= 'Content-Transfer-Encoding: 8bit'."\r\n";// 信件本文header
$body .= $msg."\r\n"; // 本文內容
//附加檔案處理
if($filename){
$mimeType = mime_content_type($filename); // 判斷檔案類型 ,php.ini要開啟php_mime_magic.dll
if(!$mimeType)$mimeType ="application/unknown"; // 若判斷不出則設為未知
$fp = fopen($filename, "r"); // 開啟檔案
$read = fread($fp, filesize($filename)); // 取得檔案內容
fclose($fp); // 關閉檔案
$read = base64_encode($read);//使用base64編碼
$read = chunk_split($read); //把檔案所轉成的長字串切開成多個小字串
$file = basename($filename); //傳回不包含路徑的檔案名稱(mail中會顯示的檔名)


// 附檔處理開始
$body .= '--'.$boundary ."n";
// 設定附加檔案HEADER
$body .= 'Content-type: '.$mimeType.'; name='.$file."\r\n";
$body .= 'Content-transfer-encoding: base64'."\r\n";
$body .= 'Content-disposition: attachment; filename='.$file."\r\n";
// 加入附加檔案內容
$body .= $read ."\r\n";
}//處理附加檔案完畢
$body .= "--$boundary--";//郵件結尾


mail($mailto, $subject, $body, $headers); // 寄出信件


}

arrow
arrow
    全站熱搜

    NetPC虛擬主機 發表在 痞客邦 留言(0) 人氣()