我可以通过PHPMailer发送电子邮件,但不能通过Laravel发送电子邮件。我认为我的Laravel配置是错误的。
我从本地开发环境发送。
拉拉维尔错误
Failed to authenticate on SMTP server with username "name@example.com" using 2 possible authenticators
拉拉维尔控制器
// ...
Mail::to('anyone@whatever.com')->send(new AnyEmailTemplate());
// ...
拉拉维尔配置/邮件.php
return [
'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'),
],
],
]
拉拉维尔 .env
MAIL_DRIVER=smtp
MAIL_HOST=mail.anyprovider.com
MAIL_PORT=587
MAIL_USERNAME=name@example.com
MAIL_PASSWORD=supersecretpassword
MAIL_ENCRYPTION=tls
PHPMailer脚本(作品(
$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();
知道如何根据与PHPMailer
一起使用的设置配置 Laravel 吗?
提前感谢!
我遇到了同样的问题。
问题是我们对MAIL_PASSWORD
使用混合字符,例如#
用于.env
文件中的注释。
将密码更改为一些没有任何符号的简单密码后,我的问题解决了
根据你的 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=
当您的配置/邮件.php变为:
...
'encryption' => env('MAIL_ENCRYPTION', ''),
...
注意:编辑文件后,您必须通过以下方式告诉 laravel这些更改:
- 清理缓存
- 执行命令
php artisan dump-autoload