来自PHP邮件功能的PDF文件无法打开

时间:2019-01-28 15:08:55

标签: php html html5

注意:在发布此问题之前,我已经审查了许多与我的问题相关的问题,但是没有一个问题对我有帮助,因此请在此处发布该问题。

我想使用PHP邮件功能在一封电子邮件中发送多个pdf文件

我从下面使用了代码,所以得到了答案
How to attach two or multiple files and send mail in PHP

用户可以上传pdf文件并可以发送电子邮件,但是无法打开收到的PDF文件。我认为pdf文件的内容不会被传输,只有文件名会被传输,因此pd文件的大小以字节为单位。

 <form action="#" method="POST" enctype="multipart/form-data"  >
 <input type="file" name="csv_file[]" />
 <br/>

 <input type="file" name="csv_file[]" />
 <br/>

 <input type="file" name="csv_file[]" />
 <br/>

 <input type="submit" name="upload" value="Upload" />
 <br/>

 </form> 

 <?php

 if($_POST) {

for($i=0; $i < count($_FILES['csv_file']['name']); $i++)
{
    $ftype[]       = $_FILES['csv_file']['type'][$i];
    $fname[]       = $_FILES['csv_file']['name'][$i];
}


// array with filenames to be sent as attachment
$files = $fname;

// email fields: to, from, subject, and so on
$to = "example@gmail.com";
$from = "example@gmail.com"; 
$subject ="My subject"; 
$message = "My message";
$headers = "From: $from";

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

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

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

// preparing attachments
for($x=0;$x<count($files);$x++){
    $file = fopen($files[$x],"rb");
    $data = fread($file,filesize($files[$x]));
    fclose($file);
    $data = chunk_split(base64_encode($data));
    $message .= "Content-Type: {\"application/octet-stream\"};\n" . " name=\"$files[$x]\"\n" . 
    "Content-Disposition: attachment;\n" . " filename=\"$files[$x]\"\n" . 
    "Content-Transfer-Encoding: base64\n\n" . $data . "\n\n";
    $message .= "--{$mime_boundary}\n";
}

// send

$ok = @mail($to, $subject, $message, $headers); 
if ($ok) { 
    echo "<p>mail sent to $to!</p>"; 
} else { 
    echo "<p>mail could not be sent!</p>"; 
} 



}

?>

任何人都可以在这里指导我发送正确的pdf文件而不被截断

0 个答案:

没有答案