2012-07-03 1 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 код для отправки сообщения электронной почты из;

У меня есть googled, и я нашел много примеров, как отправить вложение с файлом, хранящимся на веб-сайте, но я хотел бы сделать это на лету. Поэтому, когда вы отправляете кнопку, она отправляет ее людям, а не загружает файл.

// 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'] фактически является файлом tmp, который создает PHP из загрузки формы.

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

Более подробную информацию о SwiftMail Приложениях можно найти на этой странице docs

Более подробную информацию о $ _FILES можно найти здесь, на W3Schools, несмотря на мне не нравится w3schools, эта страница является твердой.

+0

Спасибо за вашу помощь, я пытался, но я не получаю папку TMP поэтому вложение не работает ... Есть идеи? –

+0

Уведомление У меня была ошибка в моем коде, у меня было место после файла fileatt в $ _FILES, будучи «fileatt», только что отредактировав его. Если это не проблема, проверьте, если вы получаете файл в первую очередь, попробуйте: 'print_r ($ _ FILES);' –

+0

Прежде всего, вы ACE !!!!!!! Теперь он работает со второй строкой, еще одна вещь: имя файла странно, есть ли способ назвать его так, как должно быть? Надеюсь, это не слишком фиктивный вопрос .... Еще раз спасибо –

3

Другим способом сделать это, используя только одну переменные для пути и имени файла является:

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

 Смежные вопросы

  • Нет связанных вопросов^_^