Laravel 5.4提示[mail]无提示路径,已用markdown仍报错求解决
I’ve run into this exact head-scratcher before even after switching to Markdown emails, so let’s walk through the most likely fixes tailored to your code setup:
1. Publish Laravel’s Default Mail Components
The mail::message and mail::button components live in Laravel’s vendor directory by default. If you haven’t published them to your project’s views folder, Laravel can’t find the required hint path. Run this command to copy them over:
php artisan vendor:publish --tag=laravel-mail
This drops the necessary component files into resources/views/vendor/mail—the exact location Laravel looks for when resolving the mail:: hint path.
2. Validate Your Markdown Mail Configuration
Open config/mail.php and double-check the markdown section points to the correct path for your published components:
'markdown' => [ 'theme' => 'default', 'paths' => [ resource_path('views/vendor/mail'), ], ],
If this path is missing or incorrect, Laravel won’t be able to locate the mail:: components.
3. Fix Your Email Sending Logic
Looking at your code, you’ve created a Registered Mailable class—but you’re not actually using it to send the email! Instead, you’re calling Mail::send() directly with the view, which bypasses the Mailable’s built-in Markdown handling that automatically resolves hint paths.
Update your sendWelcomeEmail method to use the Mailable properly:
public static function sendWelcomeEmail($user) { $token = app('auth.password.broker')->createToken($user); // Use the Mailable class instead of direct Mail::send() Mail::to($user->email, $user->name)->send(new Registered($user, $token)); }
Then adjust your Registered Mailable to accept the user and token in its constructor, and pass them to the view:
protected $user; protected $token; public function __construct($user, $token) { $this->user = $user; $this->token = $token; } public function build() { return $this->markdown('emails.registered') ->with(['user' => $this->user, 'token' => $this->token]) ->from('hello@vitaleassets.nl', 'Vitale Assets') ->subject('Welkom bij Vitale Assets'); }
This ensures Laravel properly loads the Markdown component hint path through the Mailable’s native setup.
4. Clear All Caches
Old configuration or view caches can make Laravel ignore your changes. Run these commands to wipe them clean:
php artisan config:clear php artisan view:clear php artisan cache:clear
5. Double-Check Component Spelling
It sounds trivial, but typos in your blade view’s component references are a common culprit. Make sure you’re using @component('mail::message') (two colons, no misspellings)—a single colon or typo like mail:message will trigger the hint path error instantly.
6. Verify Vendor Directory Integrity
If none of the above works, your Laravel framework files might be corrupted. Reinstall the core dependencies to fix this:
composer install
内容的提问来源于stack exchange,提问作者Djoezz

