У меня проблемы с отображением моего почтового ящика в представлении.Я ясно вижу (в телескопе), что в моем запросе на публикацию есть сеанс с ключом массива «Предварительный просмотр», но в браузере ничего не отображается.
При отладке значения моего ответа я нахожу, что мое представление-data имеет ключ предварительного просмотра, установленный на правильный строковый рендер представления между еще двумя кавычками ("")
Например:
[
"preview": """<html></html>"""
]
Вот мой код:
Просмотр: Где я проверяю, определен ли $ preview в переменной $res
с контроллера .
</div>
@isset($preview)
<hr>
<div class="form-group row">
<div class="col">
<h4>Preview:</h4>
<div class="form__preview">
{{ $preview }}
</div>
</div>
</div>
@endisset
</form>
Контроллер: В своем действии я выполняю свое действие sendMail
public function mail(PotentialClientRequest $request)
{
$sendMail = new PotentialClientAction();
$res = $sendMail->execute($request);
return back()->with($res);
}
Действие: Здесь мы возвращаем Просмотр или отправляем почту (и возвращаем сообщение об успехе).
<?php
namespace App\Http\Actions;
use App\Mail\PotentialClientMail;
use Illuminate\Support\Facades\Mail;
use Illuminate\Foundation\Http\FormRequest;
class PotentialClientAction
{
public function execute(FormRequest $request): array
{
$contact = $this->getData($request);
$mail = new PotentialClientMail($contact);
$response = [];
switch ($request->input('action')) {
case 'mail':
$response = $this->mail($mail);
break;
case 'preview':
$response = $this->preview($mail);
break;
default:
break;
}
return $response;
}
private function mail(PotentialClientMail $mail): array
{
Mail::to(env('MAIL_FROM_ADDRESS'))->queue($mail);
return [
'success' => 'Mail successfully sent!'
];
}
private function preview(PotentialClientMail $mail): array
{
return [
'preview' => $mail->render()
];
}
private function getData(FormRequest $request): array
{
$data = $request->validated();
$contact = [
'email' => $data['email'] ?? '-',
'email_cc' => $data['email_cc'] ?? '-',
'subject' => $data['subject'] ?? '-',
'body' => $data['body'] ?? '-'
];
return $contact;
}
}
Отправляется по почте:
public function build()
{
return $this
->subject($this->data['subject'])
->markdown('backend.mails.client')
->with([
'email' => $this->data['email'],
'email_cc' => $this->data['email_cc'],
'subject' => $this->data['subject'],
'body' => $this->data['body']
]);
}
Просмотр почты:
@component('mail::message')
<p>Hi Foo,</p>
@component('mail::panel')
<p>
<strong>My email is:</strong> <a href="mailto:{{ $email }}">{{ $email }}</a><br>
<strong>My email_cc is:</strong> <a href="mailto:{{ $email_cc }}">{{ $email_cc }}</a><br>
<strong>My subject is:</strong> {{ $subject }}<br>
<strong>It's about:</strong>
</p>
<p>{{ $body }}</p>
@endcomponent
@component('mail::button', ['url' => 'mailto:' . $email])
Reply
@endcomponent
Company name,<br>
{{ config('app.name') }}
@endcomponent