Просто свяжитесь с нами по электронной почте в laravel, используя шаблон по умолчанию - путь ошибки не указан для ошибки [mail] - PullRequest
0 голосов
/ 07 октября 2019

Я пытаюсь создать простую форму электронной почты для связи с нами и использовать существующий шаблон электронной почты по умолчанию, который поставляется с laravel.

В своей форме я собираю следующие данные от моих пользователей:

  • first_name
  • last_name
  • email
  • subject
  • message

Я использую следующие FormRequest правила SendEmailRequest для подтверждения ввода:

public function rules()
{
    return [
        'first_name' => ['required', 'string', 'min:3'],
        'last_name' => ['required', 'string', 'min:3'],
        'email' => ['required', 'email'],
        'subject' => ['required', 'in:' . implode(',', config('contact-us-subjects'))],
        'message' => ['required', 'string', 'min:10'],
    ];
}

Это функция на моем контроллере, которая получает запрос и пытается отправить электронное письмо:

public function sendEmail(SendEmailRequest $sendEmailRequest)
{
    $validated = $sendEmailRequest->validated();

    $data['slot'] = view('mail.contact-us', $validated)->render();

    Mail::send('vendor.mail.html.message', $data, function($message) use($validated) {
        $message->from($validated['email'], $validated['first_name'] . ' ' . $validated['last_name']);
        $message->subject($validated['subject']);
        $message->to(config('mail.from.address'), config('mail.from.name'));
    });

    return redirect()
        ->back()
        ->with('status', 'Thanks, your email has been successfully sent to us');
}

КогдаЯ запускаю это;Я получаю следующую ошибку:

Facade \ Ignition \ Exceptions \ ViewException Не указан путь подсказки для [mail]. (Представление: C: \ xampp \ htdocs \ MyApp \ src \ resources \ views \ vendor \ mail \ html \ message.blade.php)

Я использую Laravel 6.x с PHP 7. Икс. Есть идеи, что я могу делать не так?

1 Ответ

0 голосов
/ 07 октября 2019

Я решил проблему немного по-другому. Мне пришлось построить почтовое сообщение как markdown.

Шаг 1. Создайте новое почтовое сообщение с помощью этой команды ремесленника: php artisan make:mail ContactUs

Шаг 2. Убедитесь, что по умолчанию to (аналогичноадрес / имя) установлен на config/mail.php, например:

'to' => [
    'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'),
    'name' => env('MAIL_FROM_NAME', 'Example'),
],

Шаг 3. Измените app/Mail/ContactUs.php следующим образом:

<?php

namespace App\Mail;

use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;

class ContactUs extends Mailable
{
    use Queueable, SerializesModels;

    /**
     * @var array $data
     */
    private $data;

    /**
     * Create a new message instance.
     *
     * @param array $data
     */
    public function __construct(array $data)
    {
        $this->data = $data;
    }

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        return $this
            ->from($this->data['email'], $this->data['first_name'] . ' ' . $this->data['last_name'])
            ->subject($this->data['subject'])
            ->markdown('mail.contact-us', [
                'messageBody' => $this->data['message'],
            ]);
    }
}

Шаг 4. Используйте новый почтовый ящиквот так:

public function sendEmail(SendEmailRequest $sendEmailRequest)
{
    $validated = $sendEmailRequest->validated();

    Mail::send(new ContactUs($validated));

    return redirect()
        ->back()
        ->with('status', 'Thanks, your email has been successfully sent to us');
}

Похоже, я достиг того, чего я достиг после. Письмо было отправлено с использованием шаблона по умолчанию, с которым отправляется laravel.

...