2010-11-25 277 views
1

我剛剛在我的測試環境中獲得了PHP的郵件功能。PHP:將附件添加到「即時」電子郵件?

我有一個輸出一些字符串的PHP應用程序。將這些字符串轉換爲電子郵件中的附件(*.TXT -files)將非常好,而不必先將它們存儲在磁盤上,並且必須將其讀回。 這將成爲可能的PHP?

回答

2

是的,這是可能的。你只需要讓你的電子郵件消息的multipart message語法如下:

MIME-Version: 1.0 
Content-Type: multipart/mixed; boundary=random-boundary 

This is the optional preamble of a multipart/mixed message. 
--random-boundary 
Content-Type: text/plain 

This is the main message body. 
--random-boundary 
Content-Type: text/plain 
Content-Disposition: attachment; filename=file.txt 

This is the content of the attached file. 
--random-boundary-- 
This is the optional epilogue of a multipart/mixed message. 

每個部分都那麼像任何其他信息來描述。但是你應該使用一個爲你做這個的庫。

現在,如果您使用的是PHP’s mail function,則前兩行應爲標題,其餘爲該郵件的內容。邊界應該是一個隨機邊界,以便在該部分的內容中存在該字符串前面的字符串的可能性非常小。

+0

感謝您的回答。花了一些時間讓它運行,但它的工作!謝謝 – Industrial 2010-11-25 19:38:20

1

,你可以使用的Zend_Mail類的容易得多代碼 的文件名會"smapleFilename"及其createAttachment功能 最後一個參數,但不foget設置你的transport是 樣品之前:

$mail = new Zend_Mail(); 
     $mail->setBodyText("body") 
      ->createAttachment("your wanted text " , Zend_Mime::TYPE_TEXT,    
           Zend_Mime::DISPOSITION_ATTACHMENT , Zend_Mime::ENCODING_BASE64, "smapleFilename.txt"); 
     $mail->setFrom('[email protected]', 'Server'); 
     $mail->addTo('[email protected]'); 
     $mail->setSubject("subject"); 
     $mail->send(); 

在Zend框架項目中你會這樣做:

resources.mail.transport.type = smtp 
resources.mail.transport.host = "mail.111111.com" 
resources.mail.transport.auth = login 
resources.mail.transport.username = [email protected] 
resources.mail.transport.password = test 
;resources.mail.transport.ssl = tls 
resources.mail.transport.port = 2525 
resources.mail.transport.register = true ; True by default