質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.51%

  • Laravel 5

    2388questions

    Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

  • Lumen

    10questions

    PHP Laravel製のマイクロフレームワーク

Laravel・Lumenからメール送信 (Controllerから)

受付中

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 1,072

atsushi6996

score 2

初めて投稿させていただきます。
現在開発中の案件の内容としまして
laravel5.2 管理者サイト
lumen API
開発に携わらせていただいております。

アプリからイベントが起きた際に管理者に通知メールを届けたいのですがエラーから逃れることが出来ません。

検証としまして管理者サイト側(Laravel)では簡単に設定できました。
なのでライブラリが入ってないのか?
もしくはライブラリがちゃんと入っているが動いていないのか?
切り分け出来ていない状態です。

発生している問題・エラーメッセージ

FatalErrorException in AdviseController.php line 452:
Class 'App\Http\Controllers\Mail' not found

該当のソースコード

Controller

use Illuminate\Contracts\Mail\Mailer;

 public function type_list(Request $request) {
 452行目です       Mail::send('emails.welcome', ['name' => 'user.name'], function($message) {
                    $message->to('xxxxxxxxxxxxxx@gmail.com')->subject('test.laravel');
                });
        }
route

$app->get('/advise/type/list', 'AdviseController@type_list');

試したこと

composer update

"require": {
        "php": ">=5.5.9",
        "laravel/lumen-framework": "5.2.*",
        "vlucas/phpdotenv": "~2.2",
        "zircote/swagger-php": "2.0.5",
        "aws/aws-sdk-php-laravel": "~3.0",
        "ktquez/lumen-image": "^1.0",
        "duccio/apns-php": "dev-master",
        "pda/pheanstalk": "~3.0",
        "guzzlehttp/guzzle": "~5.3|~6.0",
        "illuminate/mail": "5.2.*"
    },

補足情報(言語/FW/ツール等のバージョンなど)

PHP 5.5.30

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

0

以下のように'\'を付加してください。

\Mail::send('emails.welcome', ['name' => 'user.name'], function($message) {

同様の質問がstackoverflow.comにありました。ので詳細はこちらを参照ください。
stackoverflow.com)Mail::send() not working in Laravel 5

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/11/24 18:46

    Y.H.さん コメントありがとうございます。
    ご教授通りにバックスラッシュ(¥)を入れてみましたが、エラーは解消せずでした。

    FatalErrorException in AdviseController.php line 451:
    Class 'Mail' not found

    該当ソース
    451行目 \Mail::send('emails.welcome', ['name' => 'user.name'], function($message) {

    キャンセル

  • 2016/11/24 19:03

    config/app.php の aliases にMailの項目はありますか?
    'aliases' => array(....
    'Mail' => 'Illuminate\Support\Facades\Mail',
    ... 略
    );

    あれば use Mailを追加でどうですか?

    use Illuminate\Contracts\Mail\Mailer;
    use Mail;

    キャンセル

  • 2016/11/25 10:14

    再度ご教授ありがとうございます。
    config/app.phpは存在時しておりませんでした。
    configフォルダ内に存在するファイルは3つconst.php image.php mail.phpの3ファイルでした。

    なので、use Mailとは書かず、フルパスで指定しました use Illuminate\Support\Facades\Mail;
    Illuminate\Support\Facades\Mail  ここにはこのような記述があります。
    以下Mail.phpの全文です。
    <?php

    namespace Illuminate\Support\Facades;
    /**
    * @see \Illuminate\Mail\Mailer
    */
    class Mail extends Facade
    {
    /**
    * Get the registered name of the component.
    *
    * @return string
    */
    protected static function getFacadeAccessor()
    {
    return 'mailer';
    }
    }

    maillerに遷移しているので、Controller内に指定した use Illuminate\Contracts\Mail\Mailer;こちらに遷移する。(この認識でよろしいでしょうか?)


    そこには以下の内容の通りです。
    <?php
    namespace Illuminate\Contracts\Mail;
    interface Mailer
    {
    /**
    * Send a new message when only a raw text part.
    *
    * @param string $text
    * @param \Closure|string $callback
    * @return int
    */
    public function raw($text, $callback);

    /**
    * Send a new message using a view.
    *
    * @param string|array $view
    * @param array $data
    * @param \Closure|string $callback
    * @return void
    */
    public function send($view, array $data, $callback);

    /**
    * Get the array of failed recipients.
    *
    * @return array
    */
    public function failures();

    send()があるので使えると思うのですが、エラーとしてMailがないと怒られている状態です 。

    今現在のエラー内容は
    FatalErrorException in AdviseController.php line 452:

    該当ソース
    use Illuminate\Contracts\Mail\Mailer;
    use Illuminate\Support\Facades\Mail;

    452行目 \Mail::send('emails.welcome', ['name' => 'user.name'], function($message) {
    Class 'Mail' not found

    まだ確認すべき点がありましたら、ご教授お願いいたします。

    キャンセル

  • 2016/11/25 10:56

    Illuminate\Support\Facades\Mail::send('emails.welcome', ['name' => 'user.name'], function($message) {
    ではどうでしょうか?

    キャンセル

  • 2016/11/25 13:36 編集

    Y.H.さん
    再々度ご教授ありがとうございます。

    ControllerにIlluminate\Support\Facades\Mail::send(....)
    にしてみましたが、やはりエラーは解消出来ませんでした。

    FatalErrorException in AdviseController.php line 450:
    Class 'App\Http\Controllers\Illuminate\Support\Facades\Mail' not found

    同じエラーでした見つからないようです。
    ・pathはあっているがファイルがない
    ・ただpathが間違ってる  この2択だと思っているのですが、
    参照先を確認していることからファイルは存在していると思います。
    なので指定先が間違っているからそこには存在しないよって怒られていると思いうのですが...

    キャンセル

同じタグがついた質問を見る

  • Laravel 5

    2388questions

    Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

  • Lumen

    10questions

    PHP Laravel製のマイクロフレームワーク