Отправить файл из формы

Мне нужно отправить файл (pdf) из контактной формы на электронную почту.

На данный момент я могу отправить письмо с пустым файлом PDF.

Это код, который у меня есть в моем контроллере. Спасибо!

public function send(ContactFormRequest $request)
{
$data      = $request->all();


Mail::send('emails.contact', $data, function ($message) use ($data) {

$message->from('[email protected]', 'Contact Form');

$message->to('[email protected]')->subject('test');

if($data['document'] != '')
{
$message->attachData($data['document'], $data['document']->getClientOriginalName());

}


});


return "Your email has been sent successfully";

}

1

Решение

Чтобы прикрепить файл, вы можете использовать следующие параметры:

// Attach a file from location
$message->attach($pathToFile, array $options = []);

// Attach a file from a raw $data string...
$message->attachData($data, $name, array $options = []);

См. Ссылку ниже:
Отправка файла через форму на электронную почту с Laravel (Localhost)

2

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

Теперь это работает правильно.

Я изменился

$message->attachData($data['document'], $data['document']->getClientOriginalName());

от

$message->attach( $data['document']->getRealPath(), [
'as' => $data['document']->getClientOriginalName(),
'mime' => $data['document']->getMimeType()
]);
1

Вы используете PHPMailer?

Чтобы использовать PHPMailer:

  • Загрузите скрипт PHPMailer здесь: http://github.com/PHPMailer/PHPMailer

  • Распакуйте архив и скопируйте папку скрипта в удобный
    место в вашем проекте.

  • Включить основной файл скрипта —
    require_once ( ‘путь / к / файлу / class.phpmailer.php’);

Установите заголовки:

 $header .= "Content-Type: application/octet-stream; name=\"".$filename."\"\r\n";
$header .= "Content-Transfer-Encoding: base64\r\n";
$header .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n";

Также: PHPMailer, обеспечивает это сам,

$email = new PHPMailer();
$file_to_attach = 'filepath';
$email->AddAttachment($file_to_attach , 'filename + file extension');
$email->Send();
-1
По вопросам рекламы [email protected]