使用PHP发送电子邮件附件将.doc更改为.pdf

时间:2015-08-11 03:13:57

标签: php email pdf attachment

我使用php创建了一个代码,它已经使用了附件,但它只有.doc我想将它更改为.pdf我试图将application / msword更改为application / pdf,文件名从PO.doc更改为PO。 pdf但是当我在我的电子邮件中收到它时它已损坏。你能告诉我该怎么办?以下是我的代码。谢谢。

<?php 

$headers = "From:<noreply@example.com>";
$to = 'email@example.com';
$subject = 'Purchase Order';





$txt .="
<html>
<body> 

<p><b> PO Number:</b> $purchasenumber</p> 
<p><b> Style Code:</b> $styleCode</p> 
<p><b> Generic Number:</b> $gennum</p> 
<p><b> Vendor Name:</b> $vendname</p> 
<p><b> Planned Delivery Date:</b> $pdelivdate</p> <br/> <br/>";



    // Always set content-type when sending HTML email
$message = "MIME-Version: 1.0" . "\r\n";
// $headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
$message .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";



$fileatt_name2 = "PurchaseOrder.doc";
$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}\"";
$data2 = chunk_split(base64_encode($txt));


$message = "{$mime_boundary}\n" .
"Content-Type: text/plain; charset=iso-8859-1; format=flowed\n" .
"Content-Transfer-Encoding: 7bit\n\n" .

$message .= "{$mime_boundary}\n" .

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

// Add file attachment to the message
$message .= "--{$mime_boundary}\n" .
"Content-Type: application/msword;\n" . // {$fileatt_type}
" name=\"{$fileatt_name2}\"\n" .
"Content-Disposition: attachment;\n" .
" filename=\"{$fileatt_name2}\"\n" .
"Content-Transfer-Encoding: base64\n\n" .
$data2 . "\n\n" .
"--{$mime_boundary}--\n";



// Send the message
$send = mail($to, $subject, $message, $headers);

?>

1 个答案:

答案 0 :(得分:1)

这并不像更改扩展名(.doc,.pdf等)那样简单,无法将文件从一种类型转换为另一种类型。需要更专业的流程。你尝试过的东西类似于吃一个苹果并把它装扮成梨。它起初可能看起来像一只梨,但咬一口就会发现它实际上是一个苹果。

如果您想将.doc转换为PDF,您可以使用Microsoft Word等程序对其进行转换(虽然我确信Libre-或Open-office也可以这样做)。如果需要更自动化的方式,请考虑实施其他解决方案,例如livedocsphpdocs,尽管后者非常昂贵。

根据平台(Linux,Windows,OSX),可能会提供其他选项,如this one之类的问题所述。