1

更新到 v6.10、6.11 后,我不再能够从我的 Laravel 应用程序发送电子邮件。我最近没有更改任何代码,也没有要求或删除作曲家的任何新内容。这似乎与 Laravel 的新版本有关,因为这个确切的代码可以在 v6.7 及更低版本上正常运行并发送电子邮件。

错误信息:

找不到类“League\CommonMark\Environment”(查看:/home/ww/app/vendor/laravel/framework/src/Illuminate/Mail/resources/views/html/footer.blade.php)

{"exception":"[object] (Facade\Ignition\Exceptions\ViewException(code: 0): Class 'League\CommonMark\Environment' not found (View: /home/ww/app/vendor/laravel/framework/src /Illuminate/Mail/resources/views/html/footer.blade.php)在 /home/videocyp/app/vendor/laravel/framework/src/Illuminate/Mail/Markdown.php:103)

发布的供应商文件的页脚中导致问题的行:

{{ Illuminate\Mail\Markdown::parse($slot) }}

供应商文件Markdown.php中

use League\CommonMark\Environment;

 class Markdown
 { 
    public static function parse($text)
    {
       $environment = Environment::createCommonMarkEnvironment();
       // etc...
 }

看着League\CommonMark\Environment,我找到了课程(我的 IDE 也是如此):

final class Environment implements EnvironmentInterface, ConfigurableEnvironmentInterface { }

关于为什么 Laravel 无法看到它的供应商类之一,我在这里超出了我的理解水平。

有谁能帮忙吗?

4

2 回答 2

1

运行以下命令以重新生成需要包含在项目中的所有类的列表。

php artisan clear-compiled -o
composer dump-autoload

如果仍然无法正常工作,请尝试重新安装软件包。

composer require league/commonmark

你是从哪个版本的 Laravel 升级的?Laravel 6.7?

于 2020-01-15T02:30:27.167 回答
1

事实证明,这是从 v6.10 开始对 Laravel 构建进行重大(轻微破坏)更改的结果。

由于潜在的 XSS 漏洞,看起来他们将根解析器更改为 League CommonMark。由于在新的 CommonMark 解析器中以不同方式解析多余的空白,这会导致现有电子邮件发布模板出现其他问题。错误报告在这里这里这里

我的特殊问题非常奇怪,但除了那些报告给 Laravel 的问题之外,它还在其他地方被报告。我的服务器之间并不一致,但完全重建(流浪)解决了这个问题。

对于之前发布的电子邮件模板显示原始 HTML 的其他人,如果幸运并且没有对模板进行任何更改,则重新发布可能会解决问题。

于 2020-01-15T19:49:32.733 回答