首頁 > 後端開發 > php教程 > laravel in Mail :: build in laravel中的動態郵件配置

laravel in Mail :: build in laravel中的動態郵件配置

Karen Carpenter
發布: 2025-03-06 02:30:09
原創
910 人瀏覽過

Dynamic Mailer Configuration in Laravel with Mail::build

>用於動態郵件配置的Laravel'sMail::build!這種靈活的方法簡化了各種情況下的電子郵件設置。

基本用法

創建動態郵件的人很簡單:

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);
登入後複製

現實世界應用程序:多租戶設置

>

考慮一個多租戶應用程序:

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!');
    }
}
登入後複製

此方法非常適合多租戶應用程序,自定義電子郵件提供商或需要運行時電子郵件配置調整的任何情況。

以上是laravel in Mail :: build in laravel中的動態郵件配置的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板