Я работаю над сайтом, на котором я хочу отформатировать содержимое полученного электронного письма.
В этот момент он появляется в одну строку, как это, с отображением только значения.
Майк [email protected] 9870000000 New York Hello World
Контроллер, который я использовал для электронной почты в Laravel:
Class PostingMessageController extends Controller
{
public function create()
{
return view('posting');
}
public function store(Request $request)
{
/*
dd($request->all());
*/
$this->validate($request, [
'name' => 'required',
'email' => 'required|email',
'number' => 'required',
'city' => 'required',
'post' => 'required'
]);
Mail::send('emails.posting-message', [
'msg'=> $request->name . "\r\n". $request->email . "\r\n". $request->number . "\r\n". $request->city . "\r\n". $request->post . "\r\n"
], function($mail) use($request) {
$mail->from($request->email, $request->name);
$mail->to('[email protected]')->subject('Contact Message');
});
return redirect()->back()->with('flash_message', 'thank you, your posting info has been sent to our team. we will reach out as soon as we can to provide next steps!');
}
}
Постановка задачи:
Мне интересно, какие изменения мне нужно внести в контроллер, чтобы все отображалось в разных строках, как показано ниже с именами полей слева и значениями справа. В данный момент я вижу только значения, указанные выше.
Name Mike
Email [email protected]
Number 9870000000
City New York
Post Hello World
Если вы хотите изменить вывод вашей электронной почты, вы, вероятно, ищете что-то, что вы можете получить в blade-файле, спроектировать и затем отправить,
вот как я это делаю
В моих маршрутах: маршруты / Web.php
Route::get('contact-us', 'Main@showContactUs')->name('route_name');
Route::post('contact-us', 'Main@doContactUs')->name('route_name');
В моем контроллере: приложение / Http / Controllers / Main.php
use Illuminate\Support\Facades\Mail;
use App\Mail\SendMailable;
class Main extends Controller
{
public function showContactUs()
{
$data = [];
return View::make('pages.contactUs',$data);
}
public function doContactUs(Request $r)
{
$fullname = $r->get('fullName');
$phone = $r->get('phone');
$email = $r->get('email');
$description = $r->get('message');
Mail::to('RECEIVER_EMAIL_ADDRESS')->send(new SendMailable($fullname, $phone, $email, $description));
if (Mail::failures())
{
$message1 = " Something Went Wrong.";
}
else
{
$message2 = " Message Sent Successfully.";
}
return redirect()->route('route_name'])->with([
'warning' => $message1,
'success' => $message2
]);
}
}
затем создайте это: app \ Mail \ SendMailable.php
<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;
class SendMailable extends Mailable
{
use Queueable, SerializesModels;
public $fullname,$phone,$email,$description;
/**
* Create a new message instance.
*
* @return void
*/
public function __construct($fullname, $phone, $email,$description)
{
$this->fullname = $fullname;
$this->phone = $phone;
$this->email = $email;
$this->description = $description;
}
/**
* Build the message. THIS WILL FORMAT YOUR OUTPUT
*
* @return $this
*/
public function build()
{
return $this->view('email.layoutOne')->subject('Contact Us Subject');
}
}
Наконец, в Blade: resources / email / layoutOne.blade.php вы можете сделать это следующим образом
<div>
<p>Fullname : {{ $fullname }}</p>
<p>Phone No. : {{ $phone }}</p>
<p>Email Address : {{ $email }}</p>
<p>Description : {{ $description }}</p>
<hr>
<p>Thank you for your Query. We'll get back to you within 24 Hours. </p>
</div>
Надеюсь это поможет.
Mail::send('emails.posting-message', [
'msg'=> "Name\t" . $request->name . "\r\n". "Email\t" . $request->email . "\r\n". "Number\t" . $request->number . "\r\n". "City\t" . $request->city . "\r\n". "Post\t" . $request->post . "\r\n"
]
Почему бы не передать данные в виде массива и формата при просмотре?
$data = array(
'name'=> $request->name,
'email'=> $request->email,
'number'=> $request->number,
'city'=> $request->city,
'post'=> $request->post
);
Mail::send('emails.posting-message', $data, function($mail) use($request) {
$mail->from($request->email, $request->name);
$mail->to('[email protected]', 'Name')->subject('Contact Message');
});
Вы можете получить доступ к переменным как $ name или $ email и реализовать некоторую таблицу в своем блейд-представлении, например, в ответе @ViperTecPro
Это пример того, как вы можете это сделать … конкретный HTML зависит от вас.
<div>
<p>Name : {{ $name }}</p>
<p>Email Address : {{ $email }}</p>
</div>