D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
home
/
forge
/
re-viewers.com
/
app
/
Http
/
Controllers
/
Admin
/
Filename :
SmtpSettingController.php
back
Copy
<?php namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; use App\Models\SmtpSetting; use Illuminate\Http\Request; use Illuminate\Support\Facades\Mail; use Illuminate\Support\Facades\Log; class SmtpSettingController extends Controller { public function index() { $page_title = 'SMTP Settings'; $row = SmtpSetting::firstOrCreate(['id' => 1]); return view('pages.settings.smtp_settings', compact('page_title', 'row')); } public function update(Request $request) { try { $request->validate([ 'smtp_host' => 'required_if:smtp_type,server|string', 'smtp_email' => 'required_if:smtp_type,server|email', 'smtp_password' => 'nullable|string', 'smtp_secure' => 'required_if:smtp_type,server|in:tls,ssl', 'port_no' => 'required_if:smtp_type,server|integer', // Gmail 'smtp_ghost' => 'required_if:smtp_type,gmail|string|nullable', 'smtp_gemail' => 'required_if:smtp_type,gmail|email|nullable', 'smtp_gpassword' => 'nullable|string', 'smtp_gsecure' => 'required_if:smtp_type,gmail|in:tls,ssl|nullable', 'gport_no' => 'required_if:smtp_type,gmail|integer|nullable', ]); $row = SmtpSetting::firstOrCreate(['id' => 1]); $data = []; if ($request->smtp_type === 'gmail') { $data = [ 'smtp_type' => 'gmail', 'smtp_ghost' => $request->smtp_ghost, 'smtp_gemail' => $request->smtp_gemail, 'smtp_gsecure' => $request->smtp_gsecure ?? 'tls', 'gport_no' => $request->gport_no ?? 587, ]; if ($request->filled('smtp_gpassword')) { $data['smtp_gpassword'] = $request->smtp_gpassword; } } else { $data = [ 'smtp_type' => 'server', 'smtp_host' => $request->smtp_host, 'smtp_email' => $request->smtp_email, 'smtp_secure' => $request->smtp_secure ?? 'tls', 'port_no' => $request->port_no ?? 587, ]; if ($request->filled('smtp_password')) { $data['smtp_password'] = $request->smtp_password; } } $row->update($data); return redirect()->route('smtp.settings')->with('success', 'Settings updated successfully.'); } catch (\Exception $e) { Log::error('Failed to update SMTP settings: ' . $e->getMessage()); return redirect()->route('smtp.settings')->with('error', 'Failed to update settings. Please check your inputs and try again.'); } } public function sendTestEmail(Request $request) { $request->validate(['email' => 'required|email']); $recipient = $request->email; try { $settings = SmtpSetting::firstOrCreate(['id' => 1]); if ($settings->smtp_type === 'gmail') { config([ 'mail.mailers.smtp.host' => $settings->smtp_ghost, 'mail.mailers.smtp.username' => $settings->smtp_gemail, 'mail.mailers.smtp.password' => $settings->smtp_gpassword, 'mail.mailers.smtp.encryption' => $settings->smtp_gsecure, 'mail.mailers.smtp.port' => $settings->gport_no, 'mail.from.address' => $settings->smtp_gemail, ]); } else { config([ 'mail.mailers.smtp.host' => $settings->smtp_host, 'mail.mailers.smtp.username' => $settings->smtp_email, 'mail.mailers.smtp.password' => $settings->smtp_password, 'mail.mailers.smtp.encryption' => $settings->smtp_secure, 'mail.mailers.smtp.port' => $settings->port_no, 'mail.from.address' => $settings->smtp_email, ]); } Mail::raw('This is a test email from your application.', function ($message) use ($recipient) { $message->to($recipient)->subject('Test Email from Your App'); }); return response()->json(['status' => 1, 'msg' => 'Test email sent successfully!']); } catch (\Exception $e) { return response()->json(['status' => 0, 'msg' => $e->getMessage()]); } } }