2012-07-03 54 views
10

一如既往的地方,我學到了很多東西。我現在有一個新的東西要學:swiftmailer和附件的電子郵件表格 - 初學者

我有一個html表單:

<tr><td width="16%">File attachment</td><td width="2%">:</td><td><input type="file" name="fileatt" /></td></tr> 

和mail.php:

$attachfile=$_POST["fileatt"]; 

和正確swiftmailer代碼發送電子郵件的;

我已經使用了Google,並且發現了許多示例,如何使用存儲在網站上的文件發送附件,但我希望能夠在飛行中執行此操作。因此,當您提交按鈕時,它會將其發送給人員,而不是上傳文件。

// Create the Transport 
$transport = Swift_SmtpTransport::newInstance('mail.server.co.uk', 25) 
->setUsername('user') 
->setPassword('pass') 
; 

// Create the Mailer using your created Transport 
$mailer = Swift_Mailer::newInstance($transport); 

// Create a message 
$message = Swift_Message::newInstance($subject) 
    ->setFrom(array('[email protected]' => 'name')) 

    ->setBody($html, 'text/html') 
    ; 
// Add alternative parts with addPart() 
$message->addPart(strip_tags($html), 'text/plain'); 

// Send the message 
$result = $mailer->send($message); 

任何人都可以幫助我如何在飛行文件上傳,請?提前致謝!!!

回答

25

有一個簡單的方法來做到這一點,在這裏你去:

$message->attach(
Swift_Attachment::fromPath('/path/to/image.jpg')->setFilename('myfilename.jpg') 
); 

這是一種方式SwiftMail能做到這一點,現在只是在/ tmp文件,並把上面的爲以下:

假設:fileatt是$ _FILE的變量,['tmp_name']實際上是PHP從表單上傳創建的tmp文件。

$message->attach(
Swift_Attachment::fromPath($_FILES['fileatt']['tmp_name'])->setFilename($_FILES['fileatt']['name']) 
); 

上SwiftMail附件的更多信息可以在此頁面docs

在$ _FILES的更多信息可以在這裏找到在W3Schools的上找到,儘管我不喜歡w3schools,這個頁面是固體。

+0

感謝您的幫助,我試過,但我沒有得到tmp的文件夾,因此該附件不能正常工作... 任何想法? –

+0

注意我的代碼中存在一個錯誤,在$ _FILES'fileatt'之後有一個空格,'fileatt'剛剛編輯它。 如果這不是問題,請檢查您是否首先收到該文件,請嘗試:'print_r($ _ FILES);' –

+0

首先,您是ACE !!!!!!!它現在正在與第二行一起工作,還有一件事:文件名很奇怪,有沒有什麼辦法來命名它,因爲它應該是?希望這不是太虛擬的問題....再次感謝 –

3

另一種方式來做到這一點,只使用一個變量路徑和文件名是:

$message->attach(Swift_Attachment::fromPath('full-path-with-attachment-name'));