设置电子邮件语言

问题描述 投票:0回答:2

我有向用户发送电子邮件的警报系统。如何根据用户偏好以语言发送电子邮件。

在用户表中我有一列

language
。它存储用户选择的语言(“en”、“de”等...)

我用这个发送电子邮件:

public function handle(){
...
Mail::send('emails.newSearchAlert', ['u' => $u, 'results' => $results], 
    function ($m) use ($u) {

        $m->from('[email protected]', 'My company');
}

        $m->to($u->email)->subject('Your search alert - ' . $u->search);
    });

在我的

newSearchAlert
中,我这样做:

@if(App::isLocale('de'))
    <h3>Ihr Alert</h3>
@elseif(App::isLocale('en'))
    <h3>Your campaign alert: </h3>

但它不起作用。我总是收到德语电子邮件。如何使用表中的

language
列。

PS 我使用这个包进行本地化: https://github.com/mcamara/laravel-localization

php laravel email
2个回答
1
投票

在发送电子邮件之前,您必须设置您的区域设置

App::setLocale($language);

其中

$language
是您从数据库加载的语言

我认为在你的情况下是

App::setLocale($u->language);

0
投票

作为完整的解决方案:

我确实在 Providers/AppServiceProvider.php

中使用了 Mazz 解决方案
App::setLocale($language);

别忘了添加:

use App;

我正在使用 Laravel 8

© www.soinside.com 2019 - 2024. All rights reserved.