You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 10.13.1邮件发送报错:$address访问权限及类型定义问题

问题排查与解决方法

1. 立即回退对vendor目录的修改

直接修改/vendor/symfony/mime/Address.php是错误操作,依赖包文件会在composer操作时被覆盖,还会破坏版本一致性。执行以下命令恢复原始依赖文件:

composer install --no-dev

2. 检查Symfony Mime组件版本兼容性

Laravel 10.13.1对Symfony组件版本有明确约束,版本不匹配是引发属性定义冲突的核心原因:

  • 查看当前Symfony Mime版本:
    composer show symfony/mime
    
  • Laravel 10.x要求Symfony Mime版本在^6.2至^6.4区间,若版本不符:
    1. 修改composer.json中的版本约束,比如设置为"symfony/mime": "^6.4"
    2. 执行更新命令:
      composer update symfony/mime
      

3. 清理Laravel缓存

缓存异常可能导致类加载逻辑混乱,执行以下命令清理各类缓存:

php artisan cache:clear
php artisan config:clear
php artisan route:clear

4. 重新生成邮件类并检查代码

删除之前生成的TokenVerification.php文件,重新执行生成命令确保类文件无异常:

php artisan make:mail TokenVerification --markdown=emails.token

打开app/Mail/TokenVerification.php,确认代码符合标准结构:

<?php

namespace App\Mail;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Mail\Mailables\Content;
use Illuminate\Mail\Mailables\Envelope;
use Illuminate\Queue\SerializesModels;

class TokenVerification extends Mailable
{
    use Queueable, SerializesModels;

    /**
     * Create a new message instance.
     */
    public function __construct()
    {
        //
    }

    /**
     * Get the message envelope.
     */
    public function envelope(): Envelope
    {
        return new Envelope(
            subject: 'Token Verification',
        );
    }

    /**
     * Get the message content definition.
     */
    public function content(): Content
    {
        return new Content(
            markdown: 'emails.token',
        );
    }

    /**
     * Get the attachments for the message.
     *
     * @return array<int, \Illuminate\Mail\Mailables\Attachment>
     */
    public function attachments(): array
    {
        return [];
    }
}

5. 验证邮箱配置正确性

检查.env文件中的邮箱配置项,确保参数无误:

MAIL_MAILER=smtp
MAIL_HOST=smtp.example.com
MAIL_PORT=587
MAIL_USERNAME=your-email@example.com
MAIL_PASSWORD=your-email-password
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=your-email@example.com
MAIL_FROM_NAME="${APP_NAME}"

执行php artisan config:cache加载最新配置后,再次尝试发送邮件。


内容的提问来源于stack exchange,提问作者Александр Инженер

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 04:45:44