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

135
23

Маршрут:

Route::get('sendemail', function () {

$data = array(
'name' => "Learning Laravel",
);

Mail::send('AltHr/Portal/welcome', $data, function ($message) {

$message->from('rajveer.digi@gmail.com', 'John Doe');

$message->to('ra7veer@gmail.com')->subject('Alt Support');

});

return "Your email has been sent successfully";

});

Welcome.blade.php:

<html>
<head>
<meta charset="utf-8">
</head>
<body>

<div>
Hello Idris test test
</div>

</body>
</html>

Привет, ребята, поэтому я установил свой файл config/mail.php и мой.env файл, и я использую sendgrid smtp для отправки электронной почты.

Вышеприведенный код - это простой код, которому мне удается это сделать, когда я открываю свой браузер: localhost/sendemail отправляет электронное письмо прямо на мой адрес электронной почты, указанный в коде.

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

<form role="form" class="m-t-15">
<div class="form-group form-group-default">
<label>Full Name*</label>
<input type="text" placeholder="As per IC" class="form-control" required>
</div>
<div class="form-group form-group-default">
<label>Company*</label>
<input type="text" placeholder="Company name" class="form-control" required>
</div>
<div class="form-group form-group-default">
<label>Email*</label>
<input type="email" placeholder="Company email preferred" class="form-control" required>
</div>
<div class="form-group form-group-default">
<label>Category</label>
<select class="full-width form-control">
<option value=""></option>
<option value="1">Sign Up</option>
<option value="2">Onboarding</option>
</select>
</div>
<div class="form-group form-group-default">
<label>Message*</label>
<textarea placeholder="Please type your message here" style="height:100px" class="form-control" required></textarea>
</div>
<div class="form-group form-group-default">
<label>Attachment</label>
<input type="file" name="pic" accept="file_extension|image/*|media_type">
</div>

<div class="sm-p-t-10 clearfix">
<p class="pull-left small hint-text m-t-5 font-arial">*indicates required field</p>
<button class="btn btn-primary font-montserrat all-caps fs-12 pull-right xs-pull-left">Submit</button>
</div>
<div class="clearfix"></div>
</form>

Итак, я создал форму сейчас, я хочу знать, как я могу сделать так, чтобы детали были динамическими, а не жестко закодированными в файле маршрута

Как я могу это сделать?

спросил(а) 2021-01-25T15:22:22+03:00 4 месяца, 4 недели назад
1
Решение
64

Измените свой маршрут на сообщение

Route::post('sendemail', function (Request $request) {

$data = array(
'name' => $request->name,
'mail'=>$request->mail,
'message'=>$request->message,
'category'=>$request->category,
'company'=>$request->company
);

Mail::send('AltHr/Portal/welcome', $data, function ($message) use($request) {

$message->from($request->mail,$request->name);

$message->to('ra7veer@gmail.com')->subject('Alt Support');

});

return "Your email has been sent successfully";

});

измените форму на:

<form role="form" action={{route('sendemail')}} method="post" class="m-t-15">
<div class="form-group form-group-default">
<label>Full Name*</label>
<input type="text" name="name" placeholder="As per IC" class="form-control" required>
</div>
<div class="form-group form-group-default">
<label>Company*</label>
<input type="text" name="company" placeholder="Company name" class="form-control" required>
</div>
<div class="form-group form-group-default">
<label>Email*</label>
<input type="email" name="mail" placeholder="Company email preferred" class="form-control" required>
</div>
<div class="form-group form-group-default">
<label>Category</label>
<select name="category" class="full-width form-control">
<option value=""></option>
<option value="1">Sign Up</option>
<option value="2">Onboarding</option>
</select>
</div>
<div class="form-group form-group-default">
<label>Message*</label>
<textarea name="message" placeholder="Please type your message here" style="height:100px" class="form-control" required></textarea>
</div>
<div class="form-group form-group-default">
<label>Attachment</label>
<input type="file" name="pic" accept="file_extension|image/*|media_type">
</div>

<div class="sm-p-t-10 clearfix">
<p class="pull-left small hint-text m-t-5 font-arial">*indicates required field</p>
<button class="btn btn-primary font-montserrat all-caps fs-12 pull-right xs-pull-left">Submit</button>
</div>
<div class="clearfix"></div>
</form>

ваш почтовый ящик

<html>
<head>
<meta charset="utf-8">
</head>
<body>

<div>
{{name}}
{{mail}}
{{message}}
{{category}}
{{company}}
</div>

</body>
</html>

Для прикрепления файла используйте $message->attach($pathToFile);

Дополнительная информация: https://laravel.com/docs/5.1/mail

ответил(а) 2021-01-25T15:22:22+03:00 4 месяца, 4 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема