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

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

新規登録して質問してみよう
ただいま回答率
85.46%
Gmail

GmailとはGoogleによって提供されているウェブメールのサービスのことです。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

composer

Composerとは、PHP5.3.2以上で使用可能なパッケージ管理ツールです。指定ディレクトリ内だけでパッケージ管理します。

Q&A

解決済

1回答

1677閲覧

[Illuminate \ Mail \ TransportManager]のNULLドライバーを解決できません。

of_the_Europa

総合スコア66

Gmail

GmailとはGoogleによって提供されているウェブメールのサービスのことです。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

composer

Composerとは、PHP5.3.2以上で使用可能なパッケージ管理ツールです。指定ディレクトリ内だけでパッケージ管理します。

0グッド

0クリップ

投稿2021/12/23 10:51

リモートサーバーにて、自サイトの問い合わせフォームからメール送信ができません。
タイトルの通り、

Unable to resolve NULL driver for [Illuminate\Mail\TransportManager].

というエラーになってしまいます。
こちらはローカルで試した際には、無事メールを送信することができたのですが、リモートではそれが叶いませんでした。
何か環境設定が足りないような気がしているのですが、それが分かりません。

.envのメール設定も含めて、ローカルのプログラムをリモートに一通り反映させています。

ホストはgmailに設定していて、ローカルで試した際には「安全性の低いアプリのアクセス」を許可し、その後2段階認証を有効化し、アプリパスワードを発行しました( こちらはリモートサーバーでも同じことをまた別にやる必要があるでしょうか? )

リモートで同じエラーを吐き出していた時に試したのは、mail.phpのhostやport番号やencryptionをそれぞれ変更してみたり(例えば、port番号を587から465へ)。しかしそれもダメで、.envもそれに合わせて変えてみましたが、それでも終始同じエラーでした。

現在の.envのプログラムはこのようになっております。

MAIL_DRIVER=smtp MAIL_HOST=smtp.gmail.com MAIL_PORT=587 MAIL_USERNAME=exempleMy@gmail.com MAIL_PASSWORD=[アプリパスワード] MAIL_ENCRYPTION=tls MAIL_FROM_ADDRESS=exempleMy@gmail.com MAIL_FROM_NAME=[アプリパスワード発行時のネーム]

こちらは現在のmail.phpになります。

<?php return [ 'default' => env('MAIL_MAILER', 'smtp'), 'mailers' => [ 'smtp' => [ 'transport' => 'smtp', 'host' => env('MAIL_HOST', 'smtp.mailgun.org'), 'port' => env('MAIL_PORT', 587), 'encryption' => env('MAIL_ENCRYPTION', 'tls'), 'username' => env('MAIL_USERNAME'), 'password' => env('MAIL_PASSWORD'), 'timeout' => null, 'auth_mode' => null, ], 'ses' => [ 'transport' => 'ses', ], 'mailgun' => [ 'transport' => 'mailgun', ], 'postmark' => [ 'transport' => 'postmark', ], 'sendmail' => [ 'transport' => 'sendmail', 'path' => '/usr/sbin/sendmail -bs', ], 'log' => [ 'transport' => 'log', 'channel' => env('MAIL_LOG_CHANNEL'), ], 'array' => [ 'transport' => 'array', ], ], 'from' => [ 'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'), 'name' => env('MAIL_FROM_NAME', 'Example'), ], 'markdown' => [ 'theme' => 'default', 'paths' => [ resource_path('views/vendor/mail'), ], ], ];

そしてこちらは Mailableクラスになります。

<?php namespace App\Mail; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Mail\Mailable; use Illuminate\Queue\SerializesModels; class ContactSendmail extends Mailable { use Queueable, SerializesModels; private $email; private $title; private $body; /** * Create a new message instance. * * @return void */ public function __construct( $inputs ) { $this->email = $inputs['email']; $this->title = $inputs['title']; $this->body = $inputs['body']; } /** * Build the message. * * @return $this */ public function build() { return $this ->from('exempleMy@gmail.com') ->subject('お問い合わせ内容') ->view('layouts.mail') ->with([ 'email' => $this->email, 'title' => $this->title, 'body' => $this->body ]); } }

環境です。
windows10
Laravel Framework 5.8.38  → ローカル環境ではv7.3でした。
conoha VPS
teraterm

もしかするとですが、SSL証明書にメールアドレスを登録していないのですが、そちらを登録すると改善されるのでしょうか。

長文失礼いたしました。
どうかよろしくお願い致しますm(__)m

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

  • .env が Laravel 6.x までの設定
  • config/mail.php が Laravel 7.x 以降の設定

で互換性がなくなっています。.envMAIL_DRIVERMAIL_MAILER に修正してください。


というよりも

Laravel Framework 5.8.38  → ローカル環境ではv7.3でした。

**「本番とローカルでメジャーバージョンが異なる」**ことのほうが大問題なので,composer.json のメジャーバージョンはしっかり固定しましょう。Laravel 6.x からはバージョン管理の方法が異なっているので注意してください。

<メジャーバージョン>.<マイナーバージョン>.<リビジョン>

5.8 までは

  • メジャーバージョン: 大きく全体的に変わる
  • マイナーバージョン: 機能追加とかで一部破壊的変更が入る
  • リビジョン: 破壊的変更のない機能追加とバグ修正

という扱いだったのですが,6.0 以降で もうこれ以上は大きく変わることはない という意思決定がされ,

  • メジャーバージョン: 機能追加とかで一部破壊的変更が入る
  • マイナーバージョン: 破壊的変更のない機能追加
  • リビジョン: バグ修正

という扱いに変わりました。これにより

  • ~5.5.0
  • ~5.6.0
  • ~5.7.0
  • ~5.8.0
  • ^6.0
  • ^7.0
  • ^8.0

のように,推奨されるバージョン要求の書き方が変わっており, 5.8 までは

「5.8 系の中で最新版を使いたいので ~5.8.0

としていたものが,6.0 以降では

「8 系の最新版を使いたいので ^8.0

と書くように変わったということです。

なお,末尾の .0 の部分に関しては,ゼロにしなくても,その時点で最新のものにしていただいて構いません。例えば ^8.5 と書くと,「8.5 以上 9.0 未満」という指定になります。9.0 に上がらない範囲で,composer update でのアップデート対象になるということです。また, composer require laravel/framework としてバージョン指定を省略する書き方をすると, ^ を使った方法で最新安定バージョンを参照する記法が使われます。

投稿2021/12/23 11:04

編集2021/12/23 11:19
mpyw

総合スコア5223

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mpyw

2021/12/23 11:23

composer.json を Git 管理していない…ってことはさすがにないですよね?
of_the_Europa

2021/12/23 12:23

ご回答ありがとうございます。 添付してくださったlaravelのアップグレードガイド、役立たせていただきました。 下の方にmailの環境変数名の記述があるのを確認できました。 MAIL_DRIVERをMAIL_MAILERに変更してみましたが変わらなかったので、いよいよアップグレードが必要だと理解できました。 慣れていないので恐怖しておりますが、慎重にやってみたいと思いますm(__)m
of_the_Europa

2021/12/23 14:49

>composer.json を Git 管理していない…ってことはさすがにないですよね? $ git ls-files こちらで管理されていることを確認しました(因みにcomposer.lockもです)。 このことで何か懸念することはありますか?
of_the_Europa

2021/12/24 09:25

ありがとうございます。 laravelを7.3までアップグレードしたところ、無事メールの送信ができるようになりました。 アップグレードした後はサイトの表示や動きに、特に問題はありませんでした、今のところ。 6.0以降からは大きな変更はないとのことですが、8系まであげずにローカルに合わせるかたちのバージョンにしました。それでも7のサポートもあとそれほど幾日もないのですね。。。 しかしながら、ほっとしております。 ありがとうございましたm(__)m
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問