File manager - Edit - /var/www/html/portal/app/Http/Services/Admin/DiagnosticoEmailService.php
Back
<?php namespace App\Http\Services\Admin; use App\Http\Requests\Admin\DiagnosticoEmailRequest; use App\Http\Resources\Admin\DiagnosticoEmailResource; use App\Mail\DiagnosticoEmailMail; use App\Models\Admin\EmailDiagnosticLog; use Illuminate\Http\RedirectResponse; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Mail; use Illuminate\Support\Str; class DiagnosticoEmailService { /** * Dispara um e-mail de teste pelo mailer escolhido e registra o resultado. */ public function enviarTeste(DiagnosticoEmailRequest $request): RedirectResponse { $dados = $request->validated(); $resource = new DiagnosticoEmailResource(); $referencia = Str::uuid()->toString(); $inicio = microtime(true); try { Mail::mailer($dados['mailer']) ->to($dados['destinatario']) ->send(new DiagnosticoEmailMail($dados['observacao'] ?? '', $referencia)); $duracao = (int) ((microtime(true) - $inicio) * 1000); $this->registrar($dados, true, null, __('Aceito pelo servidor de e-mail.'), $duracao); return redirect()->route('admin.diagnostico.email.index')->with('success', __('E-mail de teste aceito pelo mailer ":mailer" em :ms ms. Referência: :ref.', [ 'mailer' => $dados['mailer'], 'ms' => $duracao, 'ref' => $referencia, ])); } catch (\Throwable $e) { $duracao = (int) ((microtime(true) - $inicio) * 1000); $codigo = $resource->extrairCodigoSmtp($e); Log::error('Diagnóstico de e-mail: falha no envio de teste.', [ 'mailer' => $dados['mailer'], 'smtp_code' => $codigo, 'erro' => $e->getMessage(), ]); $this->registrar($dados, false, $codigo, $e->getMessage(), $duracao); return redirect()->route('admin.diagnostico.email.index')->withInput()->with('error', $resource->traduzErroSmtp($e)); } } /** * Persiste o histórico da tentativa de envio. * * @param array<string, mixed> $dados */ private function registrar(array $dados, bool $sucesso, ?int $codigo, ?string $mensagem, int $duracao): void { $user = auth()->user(); EmailDiagnosticLog::create([ 'recipient' => $dados['destinatario'], 'mailer' => $dados['mailer'], 'success' => $sucesso, 'smtp_code' => $codigo, 'result_message' => $mensagem, 'duration_ms' => $duracao, 'user_id' => $user?->id, 'user_name' => $user?->name, 'ip' => request()->ip(), ]); } }
| ver. 1.4 |
Github
|
.
| PHP 8.3.28 | Generation time: 0.02 |
proxy
|
phpinfo
|
Settings