Rumah >pembangunan bahagian belakang >tutorial php >Konfigurasi Mailer Dinamik di Laravel dengan Mail :: Build

Konfigurasi Mailer Dinamik di Laravel dengan Mail :: Build

Karen Carpenter
Karen Carpenterasal
2025-03-06 02:30:09903semak imbas

Dynamic Mailer Configuration in Laravel with Mail::build

Leverage Laravel

untuk konfigurasi pengirim dinamik! Pendekatan fleksibel ini memudahkan persediaan e -mel dalam pelbagai senario. Mail::build

Penggunaan Asas

Membuat pengirim dinamik adalah mudah:

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);

aplikasi dunia nyata: persediaan multi-penyewa

Pertimbangkan aplikasi multi-penyewa:

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!');
    }
}
Kaedah ini sesuai untuk aplikasi multi-penyewa, penyedia e-mel tersuai, atau sebarang situasi yang memerlukan pelarasan konfigurasi e-mel runtime.

Atas ialah kandungan terperinci Konfigurasi Mailer Dinamik di Laravel dengan Mail :: Build. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn