Gavr_Gavr
@Gavr_Gavr

Как в Laravel отправить файл на почту?

Есть форма обратной связи.

<form action="{{ route('send') }}" method="post" enctype="multipart/form-data">
                    @csrf
                    <div class="form-group">
                        <label for="name">Ваше имя</label>
                        <input type="text" name="name" placeholder="Введите имя">
                    </div>

                    <div>
                        <label for="email">Ваша почта</label>
                        <input type="text" name="email" placeholder="Напишите вашу почту">
                    </div>

                    <div >
                        <label for="phone">Ваш номер телефона</label>
                        <input type="text" name="phone" placeholder="Напишите ваш номер телефона">
                    </div>
                    <div>
                        <label for="filename">Загрузить файл</label>
                        <input type="file" name="filename" class="form-control">
                    </div>
                    <button type="submit">Отправить</button>
                </form>

есть контроллер:
<?php

namespace App\Http\Controllers;

use App\Contact;
use App\Mail\mailsendform;
use Illuminate\Http\Request;
use App\Http\Requests\ContactRequest;
use Mail;
use App\UserInfo;
use Illuminate\Support\Facades\Storage;

class ContactController extends Controller
{
   public function send (Request $req){
if ($req->isMethod('post') && $req->file('filename')) {
$file = $req->file('filename');
$upload_folder = 'public/mail_fils/';
$fileName = $file->getClientOriginalName(); // image.jpg
Storage::putFileAs($upload_folder, $file, $fileName);
}
/*ДАННЫЕ ИЗ ФОРМЫ*/
$firstname = $req->input('name');
$city = $req->input('city');
$email = $req->input('email');
$phone = $req->input('phone');
  
$upload_folder = 'C:\Program Files\Ampps\www\laravel\storage\app\public\mail_fils\\'; // АДРЕС ГДЕ ХРАНИТСЯ ФАЙЛ

   mail::send(['html' => 'mailtest'], ['firstname' => $firstname, 'city' => $city, 'email' => $email, 'phone' => $phone, ], function($message) use ($upload_folder, $fileName){
    $message->to('temoha1386@gmail.com', 'ART-GAS to')->subject('test email')->attachData($upload_folder, $fileName);
    });
  }
}

Данные передаются отправка на почту идет, но файл приходит с размером в 1кб. Я пробовал менять путь к файлу и ставить его не верным при это я получал точно такую же ситуацию. Мое предположение что я не верно передаю программе путь к файлу. Но я не могу понять какой он должен быть? Если я в проводнике виндовс вставляю этот путь файл находится. Подскажите пожалуйста что я делаю не так?
  • Вопрос задан
  • 819 просмотров
Решения вопроса 1
Gavr_Gavr
@Gavr_Gavr Автор вопроса
Получилось так решить:

Поменял метод
attachData($upload_folder, $fileName);
На метод:
attach($upload_folder)

В $upload_folder написал так:
$upload_folder = 'C:\Program Files\Ampps\www\laravel\storage\app\public\mail_fils\\' . $fileName;
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
part_os
@part_os
Сложное в простом
Скорей всего путь не верный, попробуйте для начала подебажить и проверить функцией file_exists, заверните это все в dd() что бы видеть что там.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы