[방성수]님이 남기신 글:
>안녕하세요!!
>파일 첨부 메일전송시 파일 크기가 이상하네요.
>소스는 아래와 같습니다..
>
>if($file1 && $file1_size){
>
>$filename=basename($file1_name); //제가 보때는 그냥 $userfile_name만
써
>도 되것같은데 한번더 걸렀네요 basename()는 파일 path를 다 빼구
파일명만
>반환하는 함수
> $result=fopen($file1,"r"); //그 파일을 읽기 모드로 엽니다.
> $file=fread($result,$file1_size); //읽기모드로 연 파일을
$file변
>수로 가지고 옵니다
> fclose($result); // 읽기모드로 연 파일을 닫습니다.
>
> if ($file1_type == ""){ //그 파일의 type가 없으면..(메일
헤더
>에 쓰이는 내용임돠)
> $file1_type = "application/octet-stream";
> }
> $boundary = "----" . uniqid("part");
>
> $mailheaders .= "MIME-Version: 1.0\r\n";
> $mailheaders .= "Content-Type: multipart/mixed;
>boundary=\"$boundary\"";
> $bodytext = "This is a multi-part message in MIME
>format.\r\n\r\n";
> $bodytext .= "--$boundary\r\n";
> $bodytext .= "Content-Type: text/html; charset=euc-kr\r\n";
> $bodytext .= "Content-Transfer-Encoding: 8bit\r\n\r\n";
> $bodytext .= nl2br(stripslashes($comment)) . "\r\n\r\n";
>
> $bodytext .= "--$boundary\r\n";
> $bodytext .= "Content-Type: $file1_type;
>name=".$filename."\r\n";
> $bodytext .= "Content-Transfer-Encoding: base64\r\n\r\n";
> $bodytext .= "Content-Disposition: attachment;
>filename=".$filename."\r\n\r\n";
>$bodytext .="Content-Length:$file \r\n";
> $bodytext .= "base64_encode($file)\r\n\r\n";
> //$bodytext .= ereg_replace("(.{80})","\\1\r\n",base64_encode
>($file)); //파일을 인코딩 해서 본문에 넣어버리네요...
> $bodytext .= "\r\n--$boundary--\r\n"; */
> }else{ //만약 첨부파일이 없다면 그냥 내용만 보냅니다...
> $bodytext = stripslashes($comment);
> }
> $old_smtp = ini_set("SMTP", "127.0.0.1"); //강제적으로 smtp
>설정 --> ISP 업체의 메일서버 입력하세요
> $sendmail_set = ini_set("sendmail_from",$admin_mail);
//
>강제적으로 php.ini -> smtp의 sendmail_from 설정
>
>여기에나와 있는 게시판에 내용과 거의 똑같습니다...(참고로
제가 리눅스에
>서
>게시판에 파일첨부 리풀시 메일전송에 쓸때와 같는
것임돠
>
>다른건 아래부분에
>$old_smtp = ini_set("SMTP", "127.0.0.1"); //강제적으로 smtp 설정 --> ISP
>업체의 메일서버 입력하세요
>$sendmail_set = ini_set("sendmail_from",$admin_mail); //강제적으로
>php.ini -> smtp의 sendmail_from 설정
>이 부분인데 이것이 없음 윈도우2000 서버에선 전송이
안되더군요 그래서 첨부
>했음돠
>(이것도 이곳 게시판에서 힌트를 얻어서 했죠)
>
>메일전송은 성공적으로 보내지더군요...
파일 또한 전송이 되고요...
>문제는 첨부된 파일이 제 크기가 아닌 이상한 용량으로
올라간다느거죠..
>다운 받고 실행해 보면 역시나 안되겠죠.....
>
>$bodytext .="Content-Length:$file \r\n"; 파일 크기를 나타내는부분이
없다
>고 해서 첨부했는데 똑 같더라고요.
>이 부분은 아마도 다운받을때 쓰는것 같던뎅...(메일엔
거의 안쓰고 있는거 아
>닌가요??)
>
>내용이 좀 길어졌는데요....
>현재 리눅스에선 제대로 보내지던것 같은뎅 왜 전송이
안될까요??
>전 윈도우 2000서버로 이용하고 있고요 php와 iis 연동으로
이용하고 있답니
>다...
>
>프로젝트가 급하게 진행된관계로 ... 이렇게 게시판에 자문을
구하는군요.
>함께 정보를 공유했음 합니다.... 부탁 드릴께요..
>(참 윈도우 아웃룩 헤더 정보를 어떻게 보는지요.
>윈도우 헤더관련 정보는 이렇게 해서 본다는데 ... 이부분이
되면
>위 내용이 해결될듯도 싶은데...)
>
>
========================================
$bodytext .="Content-Length:$file \r\n";
이 부분은 필요없어도 됩니다.
앞의 경우라면
$file 변수는 첨부파일 본문 내용을 담고 있습니다.
굳지 한다면
$bodytext .="Content-Length:$file1_size \r\n";
이렇게 해야합니다.
|