Вложения электронной почты, которые загружаются из веб-формы с SwiftMailer

Я пытаюсь использовать swftmailer для: — загрузки файла (jpg, ppt, pdf, word и т. Д. С максимальной загрузкой, например, 6 МБ) из формы на веб-странице html, — отправки содержимого формы по электронной почте с приложенным файлом через SwiftMailer.

Моя форма создана & Я использую $ _POST для захвата значений полей на странице thankyou.php. Письмо отправлено, но я не могу получить файл для прикрепления!

Файл загрузки / вложения должен быть опцией, я нашел в Интернете ресурс, который отправляет информацию только при загрузке файла, что не всегда так, поэтому я обратился к swiftmailer, который выглядит великолепно, но в документация / примеры в нем также указывается путь для загрузки вложения, я просто хочу иметь возможность прочитать файл (не указав путь) и отправить его в виде вложения на указанный адрес электронной почты вместе с другими полями формы, имя электронной почты ,Телефон & Сообщение.

Любая помощь будет принята с благодарностью.

Мой HTML (contact.html)

 <div id="form-main">
<div id="form-div">
<form class="form" method="post" action="thank-you.php" enctype="multipart/form-data">

<p class="name">
<input name="fieldFormName" type="text" class="validate[required,custom[onlyLetter],length[0,100]] feedback-input" placeholder="Name" id="name" />
</p>

<p class="email">
<input name="fieldFormEmail" type="email" class="validate[required,custom[email]] feedback-input" id="email" placeholder="Email" />
</p>

<p class="phone">
<input name="fieldFormPhone" type="number" class="validate[required,custom[onlyLetter],length[0,20]] feedback-input" placeholder="Phone" id="phone" />
</p>

<p class="text">
<textarea name="fieldDescription" class="validate[required,length[6,300]] feedback-input" id="comment" placeholder="Comment"></textarea>
</p>

<p class="upload">
<small>Send us a Drawing or file</small>
<input name="fieldAttachment" id="attachment" class="feedback-input" type="file">
</p><div class="submit">
<input type="submit" value="SEND" id="button-blue"/>
<div class="ease"></div>
</div>
</form>
</div>
</div>

Мой код PHP:

<?php
require_once 'lib/swift_required.php';

$fromEmail = $_POST['fieldFormEmail'];
$fromName = $_POST['fieldFormName'];
$fromPhone = $_POST['fieldFormPhone'];
$fromMessage = $_POST['fieldDescription'];
$fromAttachment = $_POST['fieldAttachment'];

// Create the mail transport configuration
$transport = Swift_MailTransport::newInstance();

// Create the message
$message = Swift_Message::newInstance();
$message->setTo(array(
"sender@domain.com" => "Sender Name"));
$message->setSubject("This email is sent using Swift Mailer");
$message->setBody(
"From: " . $fromName . "\n" .
"Email: " . $fromEmail . "\n" .
"Phone: " . $fromPhone . "\n" .
"Message: " . $fromMessage . "\n");
$message->setFrom("$fromEmail", "$fromName");

// *** This is the part I am struggling to understand *** //
$message->attach(Swift_Attachment::newInstance('$fromAttachment'));

// Send the email
$mailer = Swift_Mailer::newInstance($transport);
$mailer->send($message);

?>

заранее спасибо

3

Решение

Замени свой код

$message->attach(Swift_Attachment::newInstance('$fromAttachment'));

на этом

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

Другие решения

Я взял код DarveL и добавил оператор if, чтобы проверить, загружен ли файл, потому что я все еще хочу, чтобы электронное письмо отправлялось, если пользователь НЕ прикрепляет файл.
Приведенный ниже код работает, так что теперь мне просто нужно добавить проверку типа / размера файла.

if(is_uploaded_file($_FILES['fieldAttachment']['tmp_name'])) {$message->attach(

Swift_Attachment::fromPath($_FILES['fieldAttachment']
['tmp_name'])->setFilename($_FILES['fieldAttachment']['name'])

);}
1

Проверьте форму загрузки. Может быть, у вас есть ошибка в этом.

<form enctype="multipart/form-data" action="" method="POST">
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector