Подтвердить что ты не робот

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);

Может ли кто-нибудь помочь мне, как сделать загрузку файлов на лету, пожалуйста? Спасибо заранее.

4b9b3361

Ответ 1

Вот простой способ сделать это, вот вы:

$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, эта страница прочная.

Ответ 2

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

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