В настоящее время у меня есть приложение Laravel, которое имеет контактную форму. Когда форма отправлена, имя пользователя, адрес электронной почты, номер телефона и сообщение должным образом сохраняются в моей БД, пользователь получает подтверждение по электронной почте, и я не получаю никаких ошибок. Мой вопрос, как человеку, которому принадлежит форма, как я могу использовать Laravel для получения имени пользователя и сообщения на мою учетную запись gmail? Я использую Gmail SMTP для отправки электронных писем пользователю, который отправляет форму. Я хочу, чтобы информация контактной формы пользователей (только имя и сообщение) была отправлена на мой электронный адрес электронной почты.
MessagesController.php
<?php
namespace App\Http\Controllers;
use App\Mail\MessageCreated;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use App\Message;
use Illuminate\Support\Facades\Mail;
class MessagesController extends Controller
{
public function submit(Request $request)
{
$validator = Validator::make($request->all(), [
'name' => 'required|min:2',
'email' => 'required|max:255',
'phonenumber' => 'required|min:11',
'message' => 'required|min:5',
]);
if ($validator->fails()) {
return redirect(url()->previous() . '#contact')
->withErrors($validator)
->withInput();
}
$message = Message::create($request->all());
Mail::to($message->email)->queue(
new MessageCreated($message)
);
return redirect('/')->with('success', 'Your message has been
successfully sent. We will reach out to you soon');
}
}
Модель: Message.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Message extends Model
{
protected $guarded = [];
public function email(){
return $this->belongsTo(Message::class);
}
}
Отправляется по почте: MessageCreated.php
<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;
class MessageCreated extends Mailable
{
use Queueable, SerializesModels;
public function __construct($message)
{
$this->message = $message;
}
public function build()
{
return $this->markdown('mail.message-created');
}
}
Сообщение, которое получает пользователь: message-создал.blade.php
@component('mail::message')
We appreciate you taking the time to contact us. We will be reaching out to you soon.
@component('mail::button', ['url' => 'mysamplesite.io'])
Back to homepage
@endcomponent
Thank you,<br>
@endcomponent