Laravel 郵件配置

mrcong2018發表於2019-02-23

使用版本 Laravel 5.7

預設配置檔案在 根目錄下面的 .evn 檔案

MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

但是即使這幾個值正確配置了還有可能發不出休息 因為 釋出使用者和使用者名稱不同。
錯誤提示為 授權錯誤


Expected response code 250 but got code "530", with message "530 5.7.1 Authentication required

完整的配置為(以騰訊企業郵箱為例)

MAIL_DRIVER=smtp
MAIL_HOST=smtp.exmail.qq.com
MAIL_PORT=465
MAIL_USERNAME=使用者名稱
MAIL_PASSWORD=密碼
MAIL_ENCRYPTION=ssl
MAIL_FROM_ADDRESS=使用者名稱
MAIL_FROM_NAME=使用者名稱

配置成功後使用自帶的重置密碼功能試一試 。

image.png

再到郵箱裡看下

image.png

咦英文的,漢化一下!

搜尋下圖片中這段文字在哪

You are receiving this email because we received a password reset request for your account.

image.png

嗯 開啟 修改

image.png

public function toMail($notifiable)
    {
        if (static::$toMailCallback) {
            return call_user_func(static::$toMailCallback, $notifiable, $this->token);
        }

        return (new MailMessage)
            ->subject(Lang::getFromJson('重置密碼通知'))
            ->line(Lang::getFromJson('你收到這封郵件,因為我們收到了密碼重置請求您的帳戶。'))
            ->action(Lang::getFromJson('重置密碼'), url(config('app.url').route('password.reset', $this->token, false)))
            ->line(Lang::getFromJson('重置密碼連結有效期 :count 分鐘。', ['count' => config('auth.passwords.users.expire')]))
            ->line(Lang::getFromJson('如果你沒有請求密碼重置,請忽略此郵件。'));
    }

image.png

嗯還有幾處沒有漢化接著來。

使用命令

php artisan vendor:publish --tag=laravel-notifications

在資料夾生成郵件模板 位置如圖

image.png

修改為(請保持原有結構否則會一團糟)下面是我修改好的檔案

@component('mail::message')
{{-- Greeting --}}
@if (! empty($greeting))
# {{ $greeting }}
@else
@if ($level === 'error')
# @lang('Whoops!')
@else
您好
@endif
@endif

{{-- Intro Lines --}}
@foreach ($introLines as $line)
{{ $line }}

@endforeach

{{-- Action Button --}}
@isset($actionText)
<?php
    switch ($level) {
        case 'success':
        case 'error':
            $color = $level;
            break;
        default:
            $color = 'primary';
    }
?>
@component('mail::button', ['url' => $actionUrl, 'color' => $color])
{{ $actionText }}
@endcomponent
@endisset

{{-- Outro Lines --}}
@foreach ($outroLines as $line)
{{ $line }}

@endforeach

{{-- Salutation --}}
@if (! empty($salutation))
{{ $salutation }}
@else
敬禮,<br>{{ config('app.name') }}
@endif

{{-- Subcopy --}}
@isset($actionText)
@component('mail::subcopy')
@lang(
    "如果您無法點選 \":actionText\" 按鈕, 複製下面的連結。\n".
    '從您的瀏覽器開啟: [:actionURL](:actionURL)',
    [
        'actionText' => $actionText,
        'actionURL' => $actionUrl,
    ]
)
@endcomponent
@endisset
@endcomponent

image.png

完美!!!

Laravel 技術交流QQ群 852529151

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章