2010-05-12 120 views
0

我試圖從php mail命令發送電子郵件。到目前爲止,我已經能夠嘗試我所嘗試的,但似乎無法讓它與附件一起工作。我查看了網絡和我發現的最佳代碼,導致我遇到這種情況:用pdf附件發送帶有Php的郵件

$fileatt_name = 'JuneFlyer.pdf'; 
$fileatt_type = 'application/pdf'; 
$fileatt = 'JuneFlyer.pdf'; 
$file = fopen($fileatt,'rb'); 
$data = fread($file,filesize($fileatt)); 
$data = chunk_split(base64_encode($data)); 
$MAEmail = "[email protected]"; 

mail("$email_address", "$subject", "$message", 
"From: ".$MAEmail."\n". 
"MIME-Version: 1.0\n". 
"Content-type: text/html; charset=iso-8859-1". 
"--{$mime_boundary}\n" . 
"Content-Type: {$fileatt_type};\n" . 
" name=\"{$fileatt_name}\"\n" . 
"Content-Disposition: attachment;\n" . 
" filename=\"{$fileatt_name}\"\n" . 
"Content-Transfer-Encoding: base64\n\n" .$data. "\n\n"); 

當我這樣做時有兩個問題。首先,電子郵件的內容消失。

其次,附件存在錯誤。 「Adobe Reader無法打開June_flyer.pdf,因爲它不是受支持的文件類型,或者是因爲文件已損壞(例如,它是作爲電子郵件附件發送的,未正確解碼)」

任何想法如何處理這個?

感謝,

JB

回答

4

最好的辦法如何處理郵件和PHP是用一個可靠的良好測試庫 - 包含附件的電子郵件就可以輕鬆搞定非常討厭。我個人推薦SwiftMailer

+0

這似乎只是一個PHP郵件系統的很多文件。 – animuson 2010-05-12 03:11:40

+0

+1無需在此重新發明輪子。 Swift Mailer和PHPMailer使得發送電子郵件變得簡單。 – webbiedave 2010-05-12 03:12:37

+0

只要帶有附件的html電子郵件和電子郵件就是其中一個好的圖書館非常值得不少外國圖書館代碼的文件之一。 – 2010-05-12 03:21:51

1

可能是標題內的問題。如果你想學習困難的方法,那麼找出你可以如何配置不同的mimetypes標題和做的東西。

或其他簡單的方法是使用PHPmailer或其他電子郵件庫,這將爲您做出難題。要學會正確的電子郵件格式發送附件

0

一個過程是嘗試給自己使用Thunderbird時,Outlook等

然後查看電子郵件的來源電子郵件(附件)。嘗試將該消息源複製並粘貼到您的PHP代碼中(只需修剪一下頭部,如郵件()函數已經處理的頭部和頭部)以及bada-bing,即可滿足您的所有需求。

通過用獨特的塊或變量替換大量的東西(HTML部分,文本部分,附件),可以使其動態化。

然後沒有花哨的圖書館是必要的。