Swiftmailer 6.0 不再支持邮件驱动程序
使用 laravel,您还更新了 swiftmailer,因此邮件驱动程序不再工作。
这是 swiftmailer 提交,它在 6.0 中删除了邮件驱动程序。 https://github.com/swiftmailer/swiftmailer/commit/b0bcf96b1f290bd6d7bbe7bf8ab83f0be1b632b1#diff-f8bfbeb2220b9d0bd022da9deeea890a
自 Swiftmailer 5.4.5 起,此提交已被弃用。 https://github.com/swiftmailer/swiftmailer/commit/905b0bca8acf359dad3dfc2bc298c56de922cd57#diff-f8bfbeb2220b9d0bd022da9deeea890a
这里有一个关于为什么它被删除的长讨论, https://github.com/swiftmailer/swiftmailer/issues/866 where
最有用的评论 https://github.com/swiftmailer/swiftmailer/issues/866#issuecomment-289291228说:
PHP's mail()
功能不安全
第五个参数可被利用在大多数 Linux 系统上执行任意代码。这主要是因为 PHP 错误地转义了 shell 参数。您可以阅读完整的解释“为什么 mail() 在 PHP 中很危险”作者:RIPS https://blog.ripstech.com/2017/why-mail-is-dangerous-in-php/.
因此,一些应用程序存在安全问题,包括 Roundcube webmailer、MediaWiki、PHPMailer、ZendFramework、SquirrelMail 和 Swiftmailer。还有你的应用程序。因此,庆幸它已被删除并改用 SMTP。您通常可以简单地使用本地邮件服务器:
MAIL_DRIVER=smtp
MAIL_HOST=localhost
MAIL_PORT=25
MAIL_USERNAME=
MAIL_PASSWORD=
MAIL_ENCRYPTION=null
(您可能需要使用tls
如果您的服务器不接受本地未加密的邮件,则进行加密。)
Laravel
Laravel 的主要问题是它的文档仍然提到了邮件驱动程序在 Laravel 5.7 文档中 https://laravel.com/docs/5.7/mail并且只在他们的5.5升级说明 https://laravel.com/docs/5.5/upgrade需要 swiftmailer 6.0,但这并不意味着您不能再使用邮件驱动程序。