为了账号安全,请及时绑定邮箱和手机立即绑定

Laravel 电子邮件配置:我错过了什么?

Laravel 电子邮件配置:我错过了什么?

PHP
汪汪一只猫 2021-11-26 16:47:40
我可以通过PHPMailer发送电子邮件,但不能通过 Laravel。我假设我的 Laravel 配置是错误的。我从我的本地开发环境发送。Laravel 错误Failed to authenticate on SMTP server with username "name@example.com" using 2 possible authenticatorsLaravel 控制器// ...Mail::to('anyone@whatever.com')->send(new AnyEmailTemplate());// ...Laravel 配置/mail.phpreturn [  'driver' => env('MAIL_DRIVER', 'smtp'),  'host' => env('MAIL_HOST', 'mail.anyprovider.com'),  'port' => env('MAIL_PORT', 587),  'from' => [        'address' => env('MAIL_FROM_ADDRESS', 'name@example.com'),        'name' => env('MAIL_FROM_NAME', 'example.com'),  ],  'encryption' => env('MAIL_ENCRYPTION', 'tls'),  'username' => env('MAIL_USERNAME', 'name@example.com'),  'password' => env('MAIL_PASSWORD', 'supersecretpassword'),  'sendmail' => '/usr/sbin/sendmail -bs',  'markdown' => [    'theme' => 'default',    'paths' => [      resource_path('views/vendor/mail'),    ],  ],]Laravel .envMAIL_DRIVER=smtpMAIL_HOST=mail.anyprovider.comMAIL_PORT=587MAIL_USERNAME=name@example.comMAIL_PASSWORD=supersecretpasswordMAIL_ENCRYPTION=tlsPHPMailer 脚本(有效)$mail = new PHPMailer(true);$mail->isSMTP();$mail->Host = 'mail.anyprovider.com';$mail->SMTPAuth = true;$mail->Username = 'name@example.com';$mail->Password = 'supersecretpassword';$mail->SMTPAutoTLS = false;$mail->Port = 587;$mail->CharSet = 'UTF-8';$mail->setFrom('name@example.com', 'example.com');$mail->addAddress('anyone@whatever.com');$mail->isHTML(true);$mail->Subject = 'Any subject';$body = "Any content";$altBody = "Any alternative content";$mail->Body = $body;$mail->AltBody = $altBody;$mail->send();知道如何根据使用的设置来配置 LaravelPHPMailer吗?
查看完整描述

2 回答

?
偶然的你

TA贡献1841条经验 获得超3个赞

我有同样的问题。

问题是,我们使用混合字符MAIL_PASSWORD就像#是使用在注释.env文件。

将密码更改为一些没有任何符号的简单密码后,我的问题解决了


查看完整回答
反对 回复 2021-11-26
?
繁星淼淼

TA贡献1775条经验 获得超11个赞

根据您的 PHPMailer 脚本,您应该清空 MAIL_ENCRYPTION 的值。


请记住,如果您有一个 .env 文件,它会覆盖您的 config/mail.php 文件。


在您的情况下,您的 .env 文件变为:


MAIL_DRIVER=smtp MAIL_HOST=mail.anyprovider.com 

MAIL_PORT=587 

MAIL_USERNAME=name@example.com 

MAIL_PASSWORD=supersecretpassword 

MAIL_ENCRYPTION=

当你的 config/mail.php 变成:


...

'encryption' => env('MAIL_ENCRYPTION', ''), 

...

注意

在编辑文件后,您必须通过以下方式告诉 laravel 这些更改:


清理缓存

执行命令 php artisan dump-autoload


查看完整回答
反对 回复 2021-11-26
  • 2 回答
  • 0 关注
  • 153 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信