如何在Laravel中使用gmail发送邮件?
如何在Laravel中使用gmail发送邮件?
我一次又一次地尝试在本地主机上发送电子邮件,但仍然无法成功。我不知道该怎么办了。我试着搜索解决方案,但找不到一个。我编辑了config/mail.php文件:
env('MAIL_DRIVER', 'smtp'), 'host' => env('MAIL_HOST', 'smtp.gmail.com'), 'port' => env('MAIL_PORT', 587), 'from' => ['address' => 'myemail@gmail.com', 'name' => 'Do not Reply'], 'encryption' => env('MAIL_ENCRYPTION', 'tls'), 'username' => env('MAIL_USERNAME'), 'password' => env('MAIL_PASSWORD'), 'sendmail' => '/usr/sbin/sendmail -bs', 'pretend' => false, ];
我已经像这样编辑了.env文件:
MAIL_DRIVER=smtp MAIL_HOST=smtp.gmail.com MAIL_PORT=587 MAIL_USERNAME=myemail@gmail.com MAIL_PASSWORD=password MAIL_ENCRYPTION=null
仍然出现了如下错误:
[错误截图](https://i.stack.imgur.com/hGO3O.png)
问题的原因是需要在Laravel中使用Gmail发送邮件,但是没有配置正确的环境变量。解决方法是编辑.env文件并添加正确的Gmail SMTP配置信息。
解决方法如下:
1. 打开.env文件
2. 在文件中添加以下配置信息:
MAIL_DRIVER=smtp MAIL_HOST=smtp.gmail.com MAIL_PORT=465 MAIL_USERNAME=<your_email_address> MAIL_PASSWORD=<your_gmail_app_password_> MAIL_ENCRYPTION=ssl
3. 保存文件
如果需要生成应用程序密码,请按照以下步骤进行操作:
1. 访问https://support.google.com/accounts/answer/185833?hl=en
2. 生成应用程序密码并保存以备将来使用。请注意,一旦生成了应用程序密码,就无法重新编辑密码或更改相同的应用程序密码。(可以创建多个应用程序密码)
关于SSL和TLS的区别,我发现SSL直接发送的电子邮件可能会被标记为垃圾邮件,而TLS则不会。
问题原因:在使用Laravel发送邮件时,使用了SMTP驱动,但是无法成功发送邮件。
解决方法:根据建议,尝试使用sendmail驱动替代smtp驱动来发送邮件。
具体步骤如下:
1. 打开Laravel配置文件,找到并编辑.env文件;
2. 将MAIL_DRIVER的值改为sendmail;
3. 将MAIL_HOST设置为smtp.gmail.com;
4. 将MAIL_PORT设置为587;
5. 将MAIL_USERNAME设置为您的Gmail邮箱地址;
6. 将MAIL_PASSWORD设置为您的应用密码(App Password);
7. 将MAIL_ENCRYPTION设置为tls。
修改后的.env文件内容如下所示:
MAIL_DRIVER=sendmail MAIL_HOST=smtp.gmail.com MAIL_PORT=587 MAIL_USERNAME=your.com MAIL_PASSWORD=apppassword MAIL_ENCRYPTION=tls
通过以上步骤,您应该能够成功使用Gmail在Laravel框架中发送邮件了。
问题的出现原因:
- 邮件发送报错,错误信息为“Connection could not be established with host smtp.gmail.com [An attempt was made to access a socket in a way forbidden by its access permissions. #10013]”
- 用户已经按照建议进行了操作,包括启用Google的两步验证、生成应用程序密码等
- 用户已经尝试禁用McAfee和Windows Defender等安全软件,但问题仍然存在
解决方法:
- 尝试运行php artisan config:cache
和php artisan config:clear
命令
- 尝试关闭Windows Defender
- 尝试在Google的安全设置中允许发送邮件到外部地址
- 尝试使用App Password而不是自己的Gmail密码
- 如果问题仍然存在,可能是方法已经过时,不再适用
最后,还有其他用户表示该方法在Laravel 5.2和Laravel 5.7上成功运行,但也有用户表示该方法已经过时不再适用。