formmail.php~ 로 관리자한테 메일을 보낼때.. 첨부파일 오류... 정보
formmail.php~ 로 관리자한테 메일을 보낼때.. 첨부파일 오류...본문
<a href="javascript:;" onclick="window.open('./?doc=bbs/formmail.php&mb_id=&name=운영자&email=*** 개인정보보호를 위한 이메일주소 노출방지 ***';, 'formmail', 'left=50,top=50,width=500,height=443,scrollbars=auto');"> 관리자한테 </a>
의 형태로..관리자한테 메일보내기를 해봤는데요..
첨부파일을 포함해서 보내기를 하면.. mailer.lib.php 75번 에러가 나거든요..
에러메시지는 보여져도... 경고창으로 메일이 보내졌다고 나오구요..
확인해보니깐 첨부파일이 잘 갑니다..
혹시 몰라서..
확장자별로 테스트 해봤거든요..
이미지는 에러없이 잘가는데요..(jpg/ gif는 에러메시지 없이 잘갑니다.)
텍스트파일. 워드파일. 엑셀파일. 한글파일등은... 에러가 뜨고 전송이 됩니다.
에러뜨고 안가는게 아니고 메일확인하면 제대로 와있거든요.
혹시 첨부파일이 한글이름이라서 그런가해서..영문이름으로도 해봤구요..
그래도 마찬가지로 이미지파일은 에러없이 전송잘되고..
그외에 파일등은 에러메시지 (mailer.lib.php 75번) 뜨고 전송이 됩니다.
mailer.lib.php 파일은
<?
if (defined(__FILE__)) return;
define(__FILE__, TRUE);
//==============================================================================
// 메일 관련 함수
//==============================================================================
// 메일 보내기 (파일 여러개 첨부 가능)
function mailer($fname, $fmail, $to, $subject, $content, $type=0, $file="", $charset="EUC-KR", $cc="", $bcc="") {
// type : text=0, html=1, text+html=2
$fname = "=?$charset?B?" . base64_encode($fname) . "?=";
$subject = "=?$charset?B?" . base64_encode($subject) . "?=";
$charset = ($charset != "") ? "charset=$charset" : "";
$header = "Return-Path: <$fmail>\n";
$header .= "From: $fname <$fmail>\n";
$header .= "Reply-To: <$fmail>\n";
if ($cc) $header .= "Cc: $cc\n";
if ($bcc) $header .= "Bcc: $bcc\n";
$header .= "MIME-Version: 1.0\n";
$header .= "X-Mailer: sir mailer 0.9 (sir.co.kr)\n";
if ($file != "") {
$boundary = uniqid("http://sir.co.kr/");
$header .= "Content-type: MULTIPART/MIXED; BOUNDARY=\"$boundary\"\n\n";
$header .= "--$boundary\n";
}
if ($type) {
$header .= "Content-Type: TEXT/HTML; $charset\n";
if ($type == 2)
$content = nl2br($content);
} else {
$header .= "Content-Type: TEXT/PLAIN; $charset\n";
$content = stripslashes($content);
}
$header .= "Content-Transfer-Encoding: BASE64\n\n";
$header .= chunk_split(base64_encode($content)) . "\n";
if ($file != "") {
foreach ($file as $f) {
$header .= "\n--$boundary\n";
$header .= "Content-Type: APPLICATION/OCTET-STREAM; name=\"$f[name]\"\n";
$header .= "Content-Transfer-Encoding: BASE64\n";
$header .= "Content-Disposition: inline; filename=\"$f[name]\"\n";
$header .= "\n";
$header .= chunk_split(base64_encode($f[data]));
$header .= "\n";
}
$header .= "--$boundary--\n";
}
@mail($to, $subject, "", $header);
}
// 파일 첨부시
/*
$fp = fopen(__FILE__, "r");
$file[] = array(
"name"=>basename(__FILE__),
"data"=>fread($fp, filesize(__FILE__)));
fclose($fp);
*/
// 파일을 첨부함
function attach_file($filename, $file)
{
$fp = fopen($file, "r");
$tmpfile = array(
"name" => $filename,
"data" => fread($fp, filesize($file)));
fclose($fp);
return $tmpfile;
}
?>
이렇게 생겼는데요... 75번 라인이 "data" => fread($fp, filesize($file))); ← 이부분입니다.
그위에 보면 //파일첨부시 이렇게 되어있고 주석처리가 되어있는데요..
파일첨부기능쓰려면 이걸 쓰고 아래에 소스를 지워야하는걸까요?
(위에꺼 주석열어서 보내기 해봤더니 메일이 아예 안가는거 같습니다..)
검색해서 찾아봤는데.. 서버쪽 문제일꺼라고 하는 답변을 봤는데요...
첨부가 잘되서 오는거 봐선 서버쪽 문제는 아닐꺼 같거든요...
어떻게 해야할련지.... 아시는분 답변 부탁드립니다.
의 형태로..관리자한테 메일보내기를 해봤는데요..
첨부파일을 포함해서 보내기를 하면.. mailer.lib.php 75번 에러가 나거든요..
에러메시지는 보여져도... 경고창으로 메일이 보내졌다고 나오구요..
확인해보니깐 첨부파일이 잘 갑니다..
혹시 몰라서..
확장자별로 테스트 해봤거든요..
이미지는 에러없이 잘가는데요..(jpg/ gif는 에러메시지 없이 잘갑니다.)
텍스트파일. 워드파일. 엑셀파일. 한글파일등은... 에러가 뜨고 전송이 됩니다.
에러뜨고 안가는게 아니고 메일확인하면 제대로 와있거든요.
혹시 첨부파일이 한글이름이라서 그런가해서..영문이름으로도 해봤구요..
그래도 마찬가지로 이미지파일은 에러없이 전송잘되고..
그외에 파일등은 에러메시지 (mailer.lib.php 75번) 뜨고 전송이 됩니다.
mailer.lib.php 파일은
<?
if (defined(__FILE__)) return;
define(__FILE__, TRUE);
//==============================================================================
// 메일 관련 함수
//==============================================================================
// 메일 보내기 (파일 여러개 첨부 가능)
function mailer($fname, $fmail, $to, $subject, $content, $type=0, $file="", $charset="EUC-KR", $cc="", $bcc="") {
// type : text=0, html=1, text+html=2
$fname = "=?$charset?B?" . base64_encode($fname) . "?=";
$subject = "=?$charset?B?" . base64_encode($subject) . "?=";
$charset = ($charset != "") ? "charset=$charset" : "";
$header = "Return-Path: <$fmail>\n";
$header .= "From: $fname <$fmail>\n";
$header .= "Reply-To: <$fmail>\n";
if ($cc) $header .= "Cc: $cc\n";
if ($bcc) $header .= "Bcc: $bcc\n";
$header .= "MIME-Version: 1.0\n";
$header .= "X-Mailer: sir mailer 0.9 (sir.co.kr)\n";
if ($file != "") {
$boundary = uniqid("http://sir.co.kr/");
$header .= "Content-type: MULTIPART/MIXED; BOUNDARY=\"$boundary\"\n\n";
$header .= "--$boundary\n";
}
if ($type) {
$header .= "Content-Type: TEXT/HTML; $charset\n";
if ($type == 2)
$content = nl2br($content);
} else {
$header .= "Content-Type: TEXT/PLAIN; $charset\n";
$content = stripslashes($content);
}
$header .= "Content-Transfer-Encoding: BASE64\n\n";
$header .= chunk_split(base64_encode($content)) . "\n";
if ($file != "") {
foreach ($file as $f) {
$header .= "\n--$boundary\n";
$header .= "Content-Type: APPLICATION/OCTET-STREAM; name=\"$f[name]\"\n";
$header .= "Content-Transfer-Encoding: BASE64\n";
$header .= "Content-Disposition: inline; filename=\"$f[name]\"\n";
$header .= "\n";
$header .= chunk_split(base64_encode($f[data]));
$header .= "\n";
}
$header .= "--$boundary--\n";
}
@mail($to, $subject, "", $header);
}
// 파일 첨부시
/*
$fp = fopen(__FILE__, "r");
$file[] = array(
"name"=>basename(__FILE__),
"data"=>fread($fp, filesize(__FILE__)));
fclose($fp);
*/
// 파일을 첨부함
function attach_file($filename, $file)
{
$fp = fopen($file, "r");
$tmpfile = array(
"name" => $filename,
"data" => fread($fp, filesize($file)));
fclose($fp);
return $tmpfile;
}
?>
이렇게 생겼는데요... 75번 라인이 "data" => fread($fp, filesize($file))); ← 이부분입니다.
그위에 보면 //파일첨부시 이렇게 되어있고 주석처리가 되어있는데요..
파일첨부기능쓰려면 이걸 쓰고 아래에 소스를 지워야하는걸까요?
(위에꺼 주석열어서 보내기 해봤더니 메일이 아예 안가는거 같습니다..)
검색해서 찾아봤는데.. 서버쪽 문제일꺼라고 하는 답변을 봤는데요...
첨부가 잘되서 오는거 봐선 서버쪽 문제는 아닐꺼 같거든요...
어떻게 해야할련지.... 아시는분 답변 부탁드립니다.
댓글 전체
에러 내용을 올려주세요...
에러 메시지 내용입니다.
Warning: fread() : Length parameter must be greater than 0. in /home/~~~~/lib/mailer.lib.php on line 75
에디터플러스에서 75번라인이 "data" => fread($fp, filesize($file))); ← 이부분이였습니다.
Warning: fread() : Length parameter must be greater than 0. in /home/~~~~/lib/mailer.lib.php on line 75
에디터플러스에서 75번라인이 "data" => fread($fp, filesize($file))); ← 이부분이였습니다.
파일 크기가 0 이라서 생기는 문제인데 서버 문제가 아닐까 생각 되네요.