2013-07-05 81 views
0

我使用下面的函數在Drupal模塊中發送附件。它會發送docxdoc文檔,但是當它通過電子郵件發送PDF時,PDF文件的大小與原始大小不一樣,並且文檔不會打開。我無法弄清楚它爲什麼會發生。任何人都可以幫我嗎?謝謝。用電子郵件發送pdf隨時可用但pdf已損壞

<?php 

$file = "http://website.com/files/211546865_file.pdf"; 

function mail_attachment($to, $subject, $message, $from, $file) { 

    $filename = basename($file); 
    $file_size = filesize($file); 
    $content = chunk_split(base64_encode(file_get_contents($file))); 
    $uid = md5(uniqid(time())); 
    $from = str_replace(array("\r", "\n"), '', $from); // to prevent email injection 
    $header = "From: ".$from."\r\n" 
    ."MIME-Version: 1.0\r\n" 
    ."Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n" 
    ."This is a multi-part message in MIME format.\r\n" 
    ."--".$uid."\r\n" 
    ."Content-type:text/html; charset=ISO-8859-1\r\n" 
    ."Content-Transfer-Encoding: 7bit\r\n\r\n" 
    .$message."\r\n\r\n" 
    ."--".$uid."\r\n" 
    ."Content-Type: application/octet-stream; name=\"".$filename."\"\r\n" 
    ."Content-Transfer-Encoding: base64\r\n" 
    ."Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n" 
    .$content."\r\n\r\n" 
    ."--".$uid."--"; 

    return mail($to, $subject, "", $header); 
} 

?> 
+1

簡單的答案:不建立你自己的啞劇電子郵件。使用Swiftmailer或PHPMailer。兩者都會將所有代碼縮減爲幾行。 –

回答

1

邊界應該像

Content-Type: multipart/alternative; boundary="--------A4D921C2D10D7DB" 

意義 - 含有二少 ' - ' 字符。查看任何電子郵件的來源。

結尾邊界郵件 - 在另一方面 - 也許應該像

----------A4D921C2D10D7DB-- 

(再次,看不到任何郵件的來源或閱讀RFC,當然:))。

我鼓勵您使用exisitng郵件類,例如Swift MailerPHPMailer

讓我知道,如果我可以幫助你更多。

+0

如何在drupal中使用phpmailer?有一個網站的自定義模塊。當有人填寫表單時,我只是在該模塊中發送電子郵件。謝謝。 –

+0

https://drupal.org/project/phpmailer閱讀此內容 – liyakat

相關問題