Tôi đang cố gắng triển khai chức năng thư trong php, hoạt động tốt với tệp đính kèm duy nhất, nhưng vấn đề là khi tôi cố gửi nhiều tệp đính kèm, không hoạt động. Tôi đang sử dụng hàm php mail() để gửi email, tôi đang cố đính kèm tệp PDF và tệp Hình ảnh. Nếu PDF đính kèm thì Image sẽ không đính kèm, nếu Image đính kèm thì PDF sẽ không đính kèm. Bất kỳ suy nghĩ mà tôi đang làm sai?php: gửi email không thành công với nhiều tệp đính kèm
$header .= 'From: test <[email protected]>' . "\r\n";
$header .= "MIME-Version: 1.0\r\n";
$file = '1.png'
$displayname = '1.png';
$file_size = filesize($file);
$handle = fopen($file, "r");
$content = fread($handle, $file_size);
fclose($handle);
$content = chunk_split(base64_encode($content));
$uid = md5(uniqid(time()));
$name = basename($file);
$filepdf = '1.pdf'
$displaynamepdf= '1.pdf';
$file_sizepdf = filesize($filepdf);
$handlepdf = fopen($filepdf, "r");
$contentpdf = fread($handlepdf, $file_sizepdf);
fclose($handlepdf);
$contentpdf = chunk_split(base64_encode($contentpdf));
$name = basename($file);
$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/plain; 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: application/octet-stream; name=\"".$displayname."\"\r\n"; // use different content types here
$header .= "Content-Transfer-Encoding: base64\r\n";
$header .= "Content-Disposition: attachment; filename=\"".$displayname."\"\r\n\r\n";
$header .= $content."\r\n\r\n";
$header .= "Content-Type: application/octet-stream; name=\"".$displaynamepdf."\"\r\n"; // use different contentpdf types here
$header .= "Content-Transfer-Encoding: base64\r\n";
$header .= "Content-Disposition: attachment; filename=\"".$displaynamepdf."\"\r\n\r\n";
$header .= $contentpdf."\r\n\r\n";
$header .= "--".$uid."--";
if (mail($to, $subject, "", $header)) {
return 'sent';
} else {
return 'not sent';
}
My 2 ¢: Hãy thử sử dụng [PHPMailer] (http://phpmailer.worxware.com/) hoặc [swiftmailer] (http://swiftmailer.org/). –
Phải, sử dụng thư viện nếu bạn có thể - có rất nhiều vấn đề khiến nhiều người thông minh mất rất nhiều thời gian để tìm ra. Tôi thích PHPMailer. Vấn đề có thể là nhỏ và phụ thuộc vào loại máy chủ SMTP của bạn. Một thư viện sẽ xử lý những vấn đề này. –
Mihai đã chạm vào điểm này, nhưng php 'mail()' thường không đủ cho bất kỳ dự án thực sự nào. Tôi đề nghị PHPMailer. Phải mất 5 phút để thiết lập và rất mạnh mẽ. Tôi không khuyến khích bất kỳ mô-đun thư PEAR nào. –