[0009]意外と無駄にはまったメール設定

■.env

この例のLalavelフレームワークのバージョンは5.5です。

プロジェクト直下にある.envの修正を行います。

.env

              
MAIL_DRIVER=smtp
MAIL_HOST=failibere.sakura.ne.jp
MAIL_PORT=587
MAIL_USERNAME=info@failibere.jp
MAIL_PASSWORD=XXXXXXX
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=info@failibere.jp
MAIL_FROM_NAME=SYSTEMフェイリベル
              
            

ご自身の環境に合わせて変更してください。

■mail.php

次にプロジェクト/config/mail.phpの修正を行います。

mail.php

              
<?php

return [

    'driver' => env('MAIL_DRIVER', 'smtp'),
    'host' => env('MAIL_HOST', 'failibere.sakura.ne.jp'),
    'port' => env('MAIL_PORT', 587),
    'from' => [
        'address' => env('MAIL_FROM_ADDRESS', 'info@failibere.jp'),
        'name' => env('MAIL_FROM_NAME', 'SYSTEMフェイリベル'),
    ],
    'encryption' => env('MAIL_ENCRYPTION','tls'),
    'username' => env('info@failibere.jp'),
    'password' => env('XXXXXXX'),
    'sendmail' => '/usr/sbin/sendmail -bs',
    'pretend' => env('MAIL_PRETEND', false),
    'markdown' => [
        'theme' => 'default',

        'paths' => [
            resource_path('views/vendor/mail'),
        ],
    ],
];
              
            

ご自身の環境に合わせて変更してください。

■確認

.envとconfigファイルを修正したのでキャッシュのクリアを実行します。ssh接続し、Lalavelのプロジェクト配下でartisanコマンドを実行します。

この例ではプロジェクト名が[sample]でプロジェクトがあるディレクトリは/home/failibere/www/sampleです。

              
#Lalavelのプロジェクト配下に移動
% cd /home/failibere/www/sample
#キャッシュクリア
% php artisan cache:clear
% php artisan config:cache
              
            

いざ!!画面からボタン押下でメールを飛ばそうとすると・・エラーが発生しました。

エラーの内容はSwift_TransportException with message 'Expected response code 250 but got code "530", with message "530 5.7.0 Authentication requiredでした。

何故?認証が必要です??何が足りないのか分からず適当に変更しては実行していました。ググって出てくるのは設定が間違っているので確かめようというものでした。

tinkerでメールの設定のデバックを試しみることにします。

              
#Lalavelのプロジェクト配下に移動
% cd /home/failibere/www/sample
#tinkerでメールの設定のデバックを実行
% php artisan tinker
>>> dd(\Config::get('mail'));
              
            

結果は、usernameとpasswordがnullになっていました。

再度見直したところ、mail.phpのusernameとpasswordがおかしいことに気づき、以下のように修正しました。

mail.php

              
<?php

return [

    'driver' => env('MAIL_DRIVER', 'smtp'),
    'host' => env('MAIL_HOST', 'failibere.sakura.ne.jp'),
    'port' => env('MAIL_PORT', 587),
    'from' => [
        'address' => env('MAIL_FROM_ADDRESS', 'info@failibere.jp'),
        'name' => env('MAIL_FROM_NAME', 'SYSTEMフェイリベル'),
    ],
    'encryption' => env('MAIL_ENCRYPTION','tls'),
    'username' => env('MAIL_USERNAME', 'info@failibere.jp'),
    'password' => env('MAIL_PASSWORD', 'XXXXXXX'),
    'sendmail' => '/usr/sbin/sendmail -bs',
    'pretend' => env('MAIL_PRETEND', false),
    'markdown' => [
        'theme' => 'default',

        'paths' => [
            resource_path('views/vendor/mail'),
        ],
    ],
];
              
            

'MAIL_USERNAME'と'MAIL_PASSWORD'が抜けていたせいでした。。無事メールが送信できるようになりました。tinkerのおかげです(笑)tinkerの使い道を色々調べたいと思いました。