2012-05-08 49 views
6

Tôi đang gửi email qua php không có vấn đề gì. Tôi muốn đính kèm tệp .csv cùng với email HTML được cung cấp. Tôi dường như không thể tìm ra cách để làm điều đó. Có một Loại nội dung nhất định nào đó cũng phải bao gồm trong số $headers cùng với Content-Disposition của tệp đính kèm không?php gửi email html kèm theo tệp đính kèm .csv

$to = '[email protected]'; 
$subject = 'A Subject Line'; 
$headers = 'MIME-Version: 1.0' . "\r\n"; 
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 

$message = " 
<html> 
<head> 
    <title>List of New Price Changes</title> 
</head> 
<body>"; 

$message .="HTML table"; 
$message .="</body></html>"; 

mail($to, $subject, $message, $headers); 
+0

bản sao có thể có của [Gửi tệp CSV được đính kèm vào email] (http://stackoverflow.com/questions/5816421/send-csv-file-attached-to-the-email) – nickb

+0

vâng tôi đã xem bài đăng đó nhưng không giải thích những gì như thông điệp nhiều phần mà tôi nghĩ rằng những gì tôi đang tìm kiếm – ToddN

Trả lời

19
$fileatt_type = "text/csv"; 
$myfile = "myfile.csv"; 

     $file_size = filesize($myfile); 
     $handle = fopen($myfile, "r"); 
     $content = fread($handle, $file_size); 
     fclose($handle); 

     $content = chunk_split(base64_encode($content)); 

     $message = "<html> 
<head> 
    <title>List of New Price Changes</title> 
</head> 
<body><table><tr><td>MAKE</td></tr></table></body></html>"; 

     $uid = md5(uniqid(time())); 

     #$header = "From: ".$from_name." <".$from_mail.">\r\n"; 
     #$header .= "Reply-To: ".$replyto."\r\n"; 
     $header .= "MIME-Version: 1.0\r\n"; 
     $header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n"; 
     $header .= "This is a multi-part message in MIME format.\r\n"; 
     $header .= "--".$uid."\r\n"; 
     $header .= "Content-type:text/html; charset=iso-8859-1\r\n"; 
     $header .= "Content-Transfer-Encoding: 7bit\r\n\r\n"; 
     $header .= $message."\r\n\r\n"; 
     $header .= "--".$uid."\r\n"; 
     $header .= "Content-Type: text/csv; name=\"".$myfile."\"\r\n"; // use diff. tyoes here 
     $header .= "Content-Transfer-Encoding: base64\r\n"; 
     $header .= "Content-Disposition: attachment; filename=\"".$myfile."\"\r\n\r\n"; 
     $header .= $content."\r\n\r\n"; 
     $header .= "--".$uid."--"; 

mail($to, $subject, $message, $header); 

Cố gắng sửa đổi mã cho trường hợp của bạn.

+0

Nó sẽ làm việc cho một ranh giới đơn giản như "Ràng buộc ràng buộc ràng buộc"? – ToddN

+1

Tại sao bạn đặt ranh giới của riêng mình? Mã tính toán cho bạn một cái tốt đẹp. –

+0

Ahh ok, roger rằng, thử nghiệm ngay bây giờ, cảm ơn bạn – ToddN

1

Bạn đang tiêu đề HTTP khó hiểu với thư .... Có thể bạn muốn gửi một multipart messages, nhưng thay vì reimplementing nó, tôi muốn đi cho một cái gì đó giống như PHPMailer.

Các vấn đề liên quan