Laravel8 sendmail驱动运行异常 报错找不到指定路径如何解决
问题排查与解决方案
Process could not be started [The system cannot find the path specified. ] {"exception":"[object] (Swift_TransportException(code: 0): Process could not be started [The system cannot find the path specified. ] at C:\xampp4\htdocs\payroll\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Transport\StreamBuffer.php:294)
问题根因
核心原因是运行环境与配置的sendmail路径不匹配:你使用的是Windows XAMPP运行环境,但是当前配置的MAIL_SENDMAIL路径/usr/sbin/sendmail是Linux/Unix系统下的默认路径,Windows系统不存在该目录,因此触发路径找不到的报错。你的mail.php配置结构本身没有错误,不需要调整结构。
解决方案
方案1:改用SMTP驱动(推荐,Windows环境适配性更好)
- 修改.env文件的邮件配置为SMTP模式,参考配置如下(可替换为你使用的邮件服务对应的SMTP参数):
MAIL_MAILER=smtp MAIL_HOST=smtp.qq.com MAIL_PORT=465 MAIL_ENCRYPTION=ssl MAIL_USERNAME=你的邮箱账号 MAIL_PASSWORD=你的邮箱SMTP授权码 MAIL_FROM_ADDRESS=你的发件邮箱 MAIL_FROM_NAME=发件人名称
- 配置完成后执行命令
php artisan config:clear清除Laravel配置缓存,再测试发信功能即可。
方案2:保留sendmail驱动的修改方法
- 找到XAMPP内置的sendmail程序路径,默认路径为
C:\xampp4\sendmail\sendmail.exe,修改.env中的MAIL_SENDMAIL参数:
MAIL_SENDMAIL='C:\xampp4\sendmail\sendmail.exe -t -i'
- 打开
C:\xampp4\sendmail\sendmail.ini文件,配置对应的SMTP服务账号、授权码、发件人等参数 - 配置完成后执行
php artisan config:clear清除缓存后测试发信
额外注意事项
- 每次修改.env或mail.php配置文件后,必须清除配置缓存才会生效
- 配置的sendmail路径可先在资源管理器中直接访问验证,确认文件存在且可正常执行
内容的提问来源于stack exchange,提问作者enriquetanada
相关产品推荐
相关产品推荐

