Как получить имя отправителя электронной почты из контактной формы - Laravel Mail

Как я могу изменить тему письма, заголовок и имя отправителя в полях ввода формы,

Вот моя контактная форма

<h1>Contact</h1>
<form action="contact/store" method="post">
    @csrf
    <label>Name</label>
<input type="text" name="name" placeholder="Name">
<br>
<label>Email</label>
<input type="email" name="email" placeholder="Email">
<br>
<label>Message</label>
<textarea name="message" cols="30" rows="10"></textarea>
<button type="submit">Submit</button>
</form>

Вот мой почтовый контроллер

public function store(Request $request)
{
    $name = $request->name;
    $email = $request->email;
    $textmessage = $request->message;

    $data = array('name' => $name, 'email' => $email, 'textmessage' => $textmessage);
    Mail::send('mail', $data, function ($message) {
        $message->to('[email protected]', 'Email Title')->subject('Test Subject 2');
        $message->from('[email protected]', 'Test Name 2');
    });
    echo "HTML Email Sent. Check your inbox.";
}

Вот мой mail.blade.php

    <h1>Hi, i'm {{ $name }}</h1>
<p>Email :{{ $email }}</p>
<p>Message : {{ $textmessage }}</p>

Вот как я получаю письмо как

снимок экрана электронной почты

Как я могу получить имя из поля ввода контактной формы на свой адрес электронной почты вместо статического имени, которое я дал в контроллере, надеюсь, мой вопрос понятен.


person Jareer    schedule 29.06.2020    source источник
comment
Вы имеете в виду, вы хотите получить От имени почты?   -  person Mitesh Rathod    schedule 29.06.2020
comment
Да @MiteshRathod   -  person Jareer    schedule 30.06.2020


Ответы (2)


Вам просто нужно назначить name и email, я не нашел тему, поэтому оставил по умолчанию.

Попробуй это :

public function store(Request $request)
{
    $name = $request->name;
    $email = $request->email;
    $textmessage = $request->message;

    $data = array('name' => $name, 'email' => $email, 'textmessage' => $textmessage);
    Mail::send('mail', $data, function ($message) use ($name, $email) {
        $message->to('[email protected]', 'Email Title')->subject('Test Subject 2');
        $message->from($email, $name);
    });
    echo "HTML Email Sent. Check your inbox.";
}
person sta    schedule 29.06.2020
comment
Я попробовал указанные выше коды и получил сообщение об ошибке «Неопределенная переменная: данные». Что делать, чтобы избавиться от ошибки? @STA - person Jareer; 30.06.2020

Вместо того, чтобы использовать

->to('[email protected]', 'Email Title')

использовать

->to([['mail' => '[email protected]', 'name' => 'Email Title']])

Итак, to () принимает массив получателей, а получатель может быть массивом с именем и почтой.

person Murat Tutumlu    schedule 29.06.2020
comment
Я попробовал приведенный выше код и получил эту ошибку ErrorException Array to string conversion? @MuratTutumlu - person Jareer; 30.06.2020