Maison >développement back-end >tutoriel php >Configuration dynamique du mailer dans Laravel avec courrier :: build
Tirez parti de Laravel's Mail::build
pour la configuration dynamique du mailer! Cette approche flexible simplifie la configuration des e-mails dans divers scénarios.
Utilisation de base
La création d'un mailer dynamique est simple:
use Illuminate\Support\Facades\Mail; $mailer = Mail::build([ 'transport' => 'smtp', 'host' => '127.0.0.1', 'port' => 587, 'encryption' => 'tls', 'username' => 'usr', 'password' => 'pwd', 'timeout' => 5, ]); $mailer->send($mailable);
Application du monde réel: configuration multi-locataire
Considérons une application multi-locataire:
class TenantMailService { public function sendWithTenantConfig(Tenant $tenant, Mailable $mailable) { $mailerConfig = $tenant->email_settings; $mailer = Mail::build([ 'transport' => 'smtp', 'host' => $mailerConfig->smtp_host, 'port' => $mailerConfig->smtp_port, 'encryption' => $mailerConfig->encryption, 'username' => decrypt($mailerConfig->username), 'password' => decrypt($mailerConfig->password), 'from' => [ 'address' => $tenant->email, 'name' => $tenant->company_name, ], ]); try { $mailer->send($mailable); Log::info("Email sent for tenant: {$tenant->id}", ['mailable' => get_class($mailable)]); } catch (Exception $e) { Log::error("Email failed for tenant: {$tenant->id}", ['error' => $e->getMessage()]); throw $e; } } } // Usage within a controller class NewsletterController extends Controller { public function send(Tenant $tenant, TenantMailService $mailService) { $newsletter = new TenantNewsletter($tenant); $mailService->sendWithTenantConfig($tenant, $newsletter); return back()->with('success', 'Newsletter queued!'); } }
Cette méthode est idéale pour les applications multi-locataires, les fournisseurs de messagerie personnalisés ou toute situation nécessitant des ajustements de configuration de messagerie d'exécution.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!