I have contact form built in Laravel.
Using Mail to send it. Here is code:
Route:
Mail::to('contact@example.com')->send(new ContactWebmaster());
ContactWebmaster class
return $this->subject('Kontakt forma')->markdown('email.contactwebmaster');
email.contactwebmaster
@component('mail::message')
Thank you for contacting us.. (Example)
@endcomponent
In blade template contactwebmaster, I want to pass user's email passed in input text in the form.
Complete route for sending mail:
Route::post('/contactMail', function (Request $request) {
$validator = Validator::make($request->all(), [
'kontaktIme' => 'required',
'kontaktMail' => 'required|email',
'vasaPoruka' => 'required|max:255',
]);
if ($validator->fails()) {
return redirect('/kontakt')
->withInput($request->input())
->withErrors($validator);
}
Mail::to('contact@example.com')->send(new ContactWebmaster());
return redirect('/')->with('message', 'Uspešno ste poslali poruku!');
});
How to do this? I'm new in Laravel.
You can add that data to your ContactWebmaster
mailable:
Mail::to('contact@example.com')->send(new ContactWebmaster($request->all()));
Then in your ContactWebmaster
:
public $data;
constructor($data) {
$this->data = $data;
}
public function build()
{
$this->subject('Kontakt forma')->markdown('email.contactwebmaster', $data);
}
From the docs
There are two ways you may make data available to your view.
Via Public Properties:
public $user;
public function __construct(User $user)
{
$this->user= $user;
}
Via The with
Method:
public function build()
{
return $this->view('email.contactwebmaster')
->with([
'email' => $this->user->email,
]);
}
Try the below code
Mail::send('view name', ['data'=>$data], function($message)
{
$message->to('test@gmail.com', 'Email Message')->subject('Enquiry From Page!');
});