11812


Laravel 5.1でメール本文にURLを記載して送信しています。  
メールをキュー使わずに送信した時と、キューを使って送信した時で、メール本文のURLが変わってしまいます。どの様にしたら修正できるでしょうか？

テストは`php artisan serve`で実行しているので、URLは`http://localhost:8000`です。

### メール送信

[code]

    private function sendConfirmMail(Mailer $mailer, User $user)
    {
        // $mailer->send(
        $mailer->queue(    // <--ここをキューに変更した
            'emails.confirm',
            ['user' => $user, 'token' => $user->confirmation_token],
            function($message) use ($user) {
                $message->to($user->email, $user->name)->subject('ユーザー登録確認');
            }
        );
    }
    
[/code]

### メールビュー: emails.confirm

[code]

    <p>
        ようこそ、{{ $user['name'] }} さん
    </p>
    
    <p>
        以下のリンクをクリックしてユーザーを有効化してください。
    </p>
    
    <p>
        <a href="{{ url('auth/confirm', [$token]) }}">ユーザーを有効化する</a>
    </p>
    
    <p>
        {{ url('auth/confirm', [$token]) }}
    </p>
    
[/code]

### 届いたメール：$mail->send()の時

[code]

    ようこそ、Hoge さん
    
    以下のリンクをクリックしてユーザーを有効化してください。
    
    ユーザーを有効化する
    
    http://localhost:8000/auth/confirm/d1533d919888227a3b2a48a4ed483686bcb19a45ad3b9c46e4c1f0c144dde269
    
[/code]

URLは正しく`http://localhost:8000`と表示されている

### 届いたメール：$mail->queue()の時

[code]

    ようこそ、Hoge さん
    
    以下のリンクをクリックしてユーザーを有効化してください。
    
    ユーザーを有効化する
    
    http://localhost/auth/confirm/d1533d919888227a3b2a48a4ed483686bcb19a45ad3b9c46e4c1f0c144dde269
    
[/code]

URLが何故か`http://localhost`と表示される


CC BY-SA 3.0
2015-06-27T23:44:51.700
11810
2015-06-28T00:00:44.527
10150
question
php laravel
Laravelでキューでメール送信するとURLが変わってしまう


config/app.phpのurlを変更すれば直ります。  
このurlはartisanコマンドラインアプリ内でurlを生成する時に使用されます。

キューは`artisan queue:listen`もしくは`artisan
queue:work`で処理されるので、urlを生成するurl()を使った時に、ここで設定したurlを使用します。

キューで無い時は、実際にリクエストを受けたサーバのurlが使用されます。

[code]

    // config/app.php
    
    /*
    |--------------------------------------------------------------------------
    | Application URL
    |--------------------------------------------------------------------------
    |
    | This URL is used by the console to properly generate URLs when using
    | the Artisan command line tool. You should set this to the root of
    | your application so that it is used when running Artisan tasks.
    |
    */
    
    'url' => 'http://localhost:8000',
    
[/code]


CC BY-SA 3.0
2015-06-28T00:00:44.527
11812
2015-06-28T00:00:44.527
9529
11810
answer