首页 >后端开发 >php教程 >laravel in Mail :: build in laravel中的动态邮件配置

laravel in Mail :: build in laravel中的动态邮件配置

Karen Carpenter
Karen Carpenter原创
2025-03-06 02:30:09903浏览

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