2013-02-17 2 views
0

PHP 메일 기능과 관련하여 많은 게시물이 있음을 알고 있습니다. 하지만 심각 내가 아래에있는 내 코드 뭐가 잘못 됐는지 알아낼 수 : 의도 한대로PHP 메일 기능 - 첨부 파일이 텍스트로 제공됨

$subject = "New article submitted."; 
$message = "You've received this e-mail through your website's write an article form: \n"; 
$message .= "Name: {$data['username']} \n"; 
$message .= "E-mail: {$data['email']} \n"; 
$message .= "\nRegards,\nAakriti \n"; 
$headers = "From: {$data['name']} <{$data['email']}> \n"; 

// Boundary 
$semi_rand = md5(time()); 
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x"; 

// Add the headers for a file attachment 
$headers .= "\nMIME-Version: 1.0\n" . 
"Content-Type: multipart/mixed;\n" . 
" boundary=\"{$mime_boundary}\""; 

// Add a multipart boundary above the plain message 
$message = "This is a multi-part message in MIME format.\n\n" . 
"--{$mime_boundary}\n" . 
"Content-Type: text/plain;\n charset=\"iso-8859-1\"\n" . 
"Content-Transfer-Encoding: 7bit\n\n" . 
$message . "\n\n" . 
"--{$mime_boundary}\n"; 

// preparing attachments 
for($i=0;$i < count($_FILES['articledata']['name']); $i++) { 
// store the file information to variables for easier access 
$tmp_name = $_FILES['articledata']['tmp_name'][$i]; 
$type = $_FILES['articledata']['type'][$i]; 
$name = $_FILES['articledata']['name'][$i]; 
$size = $_FILES['articledata']['size'][$i]; 

$file = fopen($tmp_name,"rb"); 
$attachment = fread($file,filesize($tmp_name)); 
fclose($file); 
$attachment = chunk_split(base64_encode($attachment)); 
print_r($attachment); 
//$attachment = chunk_split(base64_encode(file_get_contents($tmp_name))); 

$message .= "Content-Type: {$type};\n" . 
" name=\"{$name}\"\n" . 
"Content-Transfer-Encoding: base64\n" . 
"Content-Disposition: attachment;\n" . 
" filename=\"{$name}\"\n\n" . 
$attachment . "\n" . 
"--{$mime_boundary}\n"; 
$message .= "--\n\n"; 
} 

$headers .= "Reply-To: <{$data['email']}>"; 

if (mail($recipient,$subject,$message,$headers)) { 
echo "<p>Thank you! Your mail was successfully sent to the webmaster. Thank you for your time.</p>"; 
} else { 
echo "<p>Sorry, there was an error and your mail was not sent. Please find an alternative method of contacting the webmaster.</p>"; 
} 

는 그냥 작동하지 않습니다. 첨부 파일이 일부 바이너리 텍스트로 나옵니다. 아래를보세요 :

MIME-Version: 1.0 
Content-Type: multipart/mixed; 
boundary="==Multipart_Boundary_xf6a3dd3e1c0c1f9233b8c66ce2a73e3ex"Reply-To: <[email protected]> 

This is a multi-part message in MIME format. 

--==Multipart_Boundary_xf6a3dd3e1c0c1f9233b8c66ce2a73e3ex 
Content-Type: text/plain; 
charset="iso-8859-1" 
Content-Transfer-Encoding: 7bit 

You've received this e-mail through your website's write an article form: 
Name: Johnson 
E-mail: [email protected] 

Regards, 
Aakriti 


--==Multipart_Boundary_xf6a3dd3e1c0c1f9233b8c66ce2a73e3ex 
Content-Type: image/jpeg; 
name="599307_322143481199958_2058932593_n.jpg" 
Content-Transfer-Encoding: base64 
Content-Disposition: attachment; 
filename="599307_322143481199958_2058932593_n.jpg" 

/9j/4AAQSkZJRgABAgAAAQABAAD//gAEKgD/4gIcSUNDX1BST0ZJTEUAAQEAAAIMbGNtcwIQAABt 
bnRyUkdCIFhZWiAH3AABABkAAwApADlhY3NwQVBQTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 
9tYAAQAAAADTLWxjbXMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 
AAAAAApkZXNjAAAA/AAAAF5jcHJ0AAABXAAAAAt3dHB0AAABaAAAABRia3B0AAABfAAAABRyWFla 
AAABkAAAABRnWFlaAAABpAAAABRiWFlaAAABuAAAABRyVFJDAAABzAAAAEBnVFJDAAABzAAAAEBi 
VFJDAAABzAAAAEBkZXNjAAAAAAAAAANjMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0ZXh0AAAA 
AEZCAABYWVogAAAAAAAA9tYAAQAAAADTLVhZWiAAAAAAAAADFgAAAzMAAAKkWFlaIAAAAAAAAG+i 
AAA49QAAA5BYWVogAAAAAAAAYpkAALeFAAAY2lhZWiAAAAAAAAAkoAAAD4QAALbPY3VydgAAAAAA 
AAAaAAAAywHJA2MFkghrC/YQPxVRGzQh8SmQMhg7kkYFUXdd7WtwegWJsZp8rGm/fdPD6TD////b 
AEMABgQEBQQEBgUFBQYGBgcJDgkJCAgJEg0NCg4VEhYWFRIUFBcaIRwXGB8ZFBQdJx0fIiMlJSUW 
HCksKCQrISQlJP/bAEMBBgYGCQgJEQkJESQYFBgkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk 
JCQkJCQkJCQkJCQkJCQkJCQkJCQkJP/CABEIAS8B4AMAIgABEQECEQH/xAAbAAACAwEBAQAAAAAA 
AAAAAAAABQIDBAEGB//EABgBAQEBAQEAAAAAAAAAAAAAAAABAgME/8QAGAEBAQEBAQAAAAAAAAAA 
AAAAAAECAwT/2gAMAwAAARECEQAAAfqgAAAHAPOabh2Vwm7+QWo06vqZa9w57WxTTLsFDRJ 

업데이트를 마지막으로는 고정있어 .. 문제의 부부가 있었다 시간 동안 내 머리를 깨는 후 :

  1. 바와 같이 asachanfbd 마임 경계 지적 아니었다 제대로 중첩 된.

  2. 했다 하나는 & 바보 아직이 주범이었다 - 추가 라인은 코드의 라인 아래 나누기 :.

    $ 메시지 = "\ nRegards, \ nAakriti N \"; $ headers = "보낸 사람 : {$ data [ 'name']} < {$ data [ 'email']}> \ n";

감사합니다.

+0

, 당신은 실제 내용을 전송하기 전에 각각의 여러 부분의 경계 후 ​​헤더를 보낼 수 있습니다. –

답변

0
질문에 대한 답변 많이하지

하지만

당신은 PHPMailer에 그 example에 모습을 가질 수 있습니다.

PHPMailer로 첨부 파일을 추가하는 것은 꽤 쉽습니다.

0

메일 마임 경계는 메일의 다른 부분을 둘러싸 기 위해 사용됩니다. 구현시 필수 mime 형식으로 메일 본문을 묶지 않았습니다. 또한 메일의 MIME 경계는 전체 메일에서 동일해야합니다.

쉬운 구현을 위해 이러한 기능 집합을 사용할 수 있습니다. 브라우저에서 그 첨부 파일을 볼하려면

http://pastebin.com/AbZjzYdv

관련 문제