2015-05-08 124 views
3

我的代碼是MIME文件附件是不開放

<?php 

require_once "Mail.php"; // PEAR Mail package 
require_once ('Mail/mime.php'); // PEAR Mail_Mime packge 

$from = "<[email protected]>"; 
$to = "<[email protected]>"; 
$subject = "Hi!"; 


$host = "ssl://smtp.googlemail.com"; 
$port = "465"; 
$username = "[email protected]"; 
$password = "example"; 

$smtp = Mail::factory('smtp', 
    array ('host' => $host, 
    'port' => $port, 
    'auth' => true, 
    'username' => $username, 
    'password' => $password)); 


$headers = array ('From' => $from, 
    'To' => $to, 
    'Subject' => $subject); 


// attachment 
$file = '/var/www/html/formsubmit/TodoList/upload/abc.pdf'; 
$crlf = "n"; 
$text="Helllooooo"; 
$html = "<html> <head> <title>Mail test</title> </head> <body>something</body></html>"; 

$mime = new Mail_mime($crlf); 
$mime->setTXTBody($text); 
$mime->setHTMLBody($html); 
if($mime->addAttachment($file)) 
{ 
    echo "Success"; 
} 
else 

{ 
    echo "Failed"; 
} 


$body = $mime->get(); 
$headers = $mime->headers($headers); 


$mail = $smtp->send($to, $headers, $body); 


if (PEAR::isError($mail)) { 
    echo("<p>" . $mail->getMessage() . "</p>"); 
} else { 
echo("<p>Message successfully sent!</p>"); 
} 
?> 

附件是無法甚至下載後打開。

郵件進來的收件箱和附件也there.But附件似乎txt文件。但我實際上是附加一個pdf文件。我使用了SMTP郵件和MIME郵件功能。

請幫我。

+0

該代碼看起來正確。您能否將收件人收到的電子郵件的來源(MIME來源)添加到您的問題中? – PeterK

+0

我沒有給你。請說清楚 –

+0

代碼看起來是正確的,所以它並沒有真正告訴我們電子郵件出了什麼問題。然而,電子郵件「源代碼」(a.k.a.MIME源或.EML文件)可以提供有用的線索。假設收件人郵箱位於Gmail,您可以使用「顯示原始」菜單來獲取電子郵件源。其他電子郵件客戶端通常提供類似的功能 – PeterK

回答

2

在郵件中相關代碼:

Content-Transfer-Encoding: base64 
Content-Type: application/octet-stream; 
name=abc.pdf 
Content-Disposition: attachment; 
filename=abc.pdf; 
size=4997278 

內容類型是一個通用的一個;嘗試使用application/pdf作爲addAttachment()的第二個參數。


此外,永遠不要張貼您的真實郵件地址和密碼的任何地方。