validate([ 'name' => ['required', 'string', 'min:2', 'max:150'], 'email' => ['required', 'email', 'max:255'], 'phone' => ['nullable', 'string', 'max:30'], 'subject' => ['required', 'string', 'min:3', 'max:100'], 'message' => ['required', 'string', 'min:10', 'max:2000'], ]); try { Mail::to(config('contact_messages.recipient')) ->send(new ContactMessageReceivedMail([ 'name' => $data['name'], 'email' => $data['email'], 'phone' => $data['phone'] ?? null, 'subject' => $data['subject'], 'message' => $data['message'], 'platform' => 'InvesteMoz', ])); } catch (Throwable $exception) { Log::warning('Falha no envio de contacto do portal.', ['exception' => $exception::class]); return response()->json(['success' => false, 'message' => 'Ocorreu um erro ao enviar a mensagem.'], 500); } return response()->json(['success' => true, 'message' => 'Mensagem enviada com sucesso.'], 201); } }