mail()
함수를 사용하여 이미지 첨부 파일이 포함 된 이메일을 테스트했습니다. 스크립트의 문제점은 이메일을 볼 때 이미지가 있어야하는 임의의 숫자, 문자 및 기호의 긴 벽이 있음을 알 수 있습니다.이미지 파일 첨부가 PHP를 통해 제대로 전송되지 않았습니다.
PHP 메일러를 사용하지 않거나 수동으로 이미지 본문에 이미지 태그를 넣지 마십시오.
내가 사용 주 PHP 파일 :
<?
include('init.php');
if (isset($_POST['name'], $_FILES['file'])){
$body = <<<BODY
From: {$_POST['name']}
Details:
Name: {$_FILES['file']['name']}
Size: {$_FILES['file']['size']}
Type: {$_FILES['file']['type']}
BODY;
mail_file('[email protected]','[email protected]','a file upload',$body,$_FILES['file']);
}
?>
<form action="" method="POST" enctype="multipart/form-data">
<input type="text" name="name" id="name">
<input type="file" name="file" id="file">
<input type="submit" value="Email File">
</form>
init.php :
<?
$path = dirname(__FILE__);
include("{$path}/mail.php");
?>
mail.php : 보낸 이메일의
<?
function mail_file($to, $from, $subject, $body, $file){
$boundary = md5(rand());
$headers = array(
'MIME-Version: 1.0',
"Content-Type: multipart/mixed; boundary=\"{$boundary}\"",
"From: {$from}"
);
$message = array(
"--{$boundary}",
'Content-Type: text/html',
'Content-Transfer-Encoding: 7bit',
'',
chunk_split($body),
"--{$boundary}",
"Content-Type: {$file['type']}; name=\"{$file['name']}\"",
"Content-Disposition: attachment; name=\"{$file['name']}\"",
"Content-Transfer-Encoding: base64",
'',
chunk_split(base64_encode(file_get_contents($file['tmp_name']))),
"--{$boundary}--"
);
mail($to, $subject, implode('\r\n', $message), implode('\r\n', $headers));
}
?>
예 :
--4f8b4f63eb5fb4f1c3cde903c7e5b306\r\nContent-Type: text/html\r\nContent-Transfer-Encoding: 7bit\r\n\r\n From: asas
Details:
Name: 728x90-Brink-Banner-V2.jpg
Size: 41583
Type: image/jpeg
\r\n--4f8b4f63eb5fb4f1c3cde903c7e5b306\r\nContent-Type: image/jpeg; name="728x90-Brink-Banner-V2.jpg"\r\nContent-Disposition: attachment; name="728x90-Brink-Banner-V2.jpg"\r\nContent-Transfer-Encoding: base64\r\n\r\n/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAUAAA/+4ADkFkb2JlAGTAAAAAAf/b
AIQAAgICAgICAgICAgMCAgIDBAMCAgMEBQQEBAQEBQYFBQUFBQUGBgcHCAcHBgkJCgoJCQwMDAwM
DAwMDAwMDAwMDAEDAwMFBAUJBgYJDQsJCw0PDg4ODg8PDAwMDAwPDwwMDAwMDA8MDAwMDAwMDAwM
DAwMDAwMDAwMDAwMDAwMDAwM/8AAEQgAWgLYAwERAAIRAQMRAf/EAOgAAAAGAwEAAAAAAAAAAAAA
AAMEBQYHCAECCQABAAAHAQEBAAAAAAAAAAAAAAABAgMEBQYHCAkQAAEDAgUBBgMDBAsHDA0NAQEC
...
L81/7CT7TfOuj+7T/wCxbf6cmeeXwouVG4P5we/F/E/yvzHTHMh6q9MNzUc7m/T5X4f4h6fP+6uF
jIJbcyh7Z0b6/h/d6fbhYSHp7D+cIXk/RYHy/RU9P+y/j6sIk9VBmYV1+H+sf9B6Dz+b7cZufPat
RB6oyV2LP+B/6NfhD8X8X7Ph34OPJMy+so95T/RGP/NzzD+bfxuuFyeoozf1ozUXWfoz+n/jJ/Rv
P9n8XvxTvzWktcx8eSvxxR+Gn9P6p83k7Ov72JFl4VE1T1tngUtb2/mmd+H+iu/jfyD1xZyZKqhz
VHdz/wA4H9F/Aa6/h/oKPxP+y+GKmX4eNXtuv//Z
\r\n--4f8b4f63eb5fb4f1c3cde903c7e5b306--
당신에게 콘텐츠 형식이 제대로 전송되었는지 확인 위치 : 당신은로 변경, 4 charater 문자열
\r\n
로 처리됩니다 따옴표 및 새로운 라인을 사용했다? Thats가 데이터 덤프의 원인 일 수 있습니다. –
또한 파일 크기를 보내야 할 수도 있습니다. –
샘플 이메일 출처를 게시 할 수 있습니까? 코드는 정상적으로 보이지만 어쩌면'mail()'이 무언가를 엉망으로 만들고 있습니다 –