如何在Laravel 5.1中使用Gmail发送邮件?

时间:2021-10-07 18:13:03

I try again and again to test sending an email from localhost but I still cannot. I don't know anymore how to do it. I try search to find solution but I cannot find one. I edited config/mail.php:

我一次又一次地尝试测试从localhost发送电子邮件,但我仍然不能。我不知道该怎么做。我尝试搜索找到解决方案,但我找不到一个。我编辑了config / mail.php:

<?php

return [

    /*
    |--------------------------------------------------------------------------
    | Mail Driver
    |--------------------------------------------------------------------------
    |
    | Laravel supports both SMTP and PHP's "mail" function as drivers for the
    | sending of e-mail. You may specify which one you're using throughout
    | your application here. By default, Laravel is setup for SMTP mail.
    |
    | Supported: "smtp", "mail", "sendmail", "mailgun", "mandrill", "ses", "log"
    |
    */

    'driver' => env('MAIL_DRIVER', 'smtp'),

    /*
    |--------------------------------------------------------------------------
    | SMTP Host Address
    |--------------------------------------------------------------------------
    |
    | Here you may provide the host address of the SMTP server used by your
    | applications. A default option is provided that is compatible with
    | the Mailgun mail service which will provide reliable deliveries.
    |
    */

    'host' => env('MAIL_HOST', 'smtp.gmail.com'),

    /*
    |--------------------------------------------------------------------------
    | SMTP Host Port
    |--------------------------------------------------------------------------
    |
    | This is the SMTP port used by your application to deliver e-mails to
    | users of the application. Like the host we have set this value to
    | stay compatible with the Mailgun e-mail application by default.
    |
    */

    'port' => env('MAIL_PORT', 587),

    /*
    |--------------------------------------------------------------------------
    | Global "From" Address
    |--------------------------------------------------------------------------
    |
    | You may wish for all e-mails sent by your application to be sent from
    | the same address. Here, you may specify a name and address that is
    | used globally for all e-mails that are sent by your application.
    |
    */

    'from' => ['address' => 'myemail@gmail.com', 'name' => 'Do not Reply'],

    /*
    |--------------------------------------------------------------------------
    | E-Mail Encryption Protocol
    |--------------------------------------------------------------------------
    |
    | Here you may specify the encryption protocol that should be used when
    | the application send e-mail messages. A sensible default using the
    | transport layer security protocol should provide great security.
    |
    */

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

    /*
    |--------------------------------------------------------------------------
    | SMTP Server Username
    |--------------------------------------------------------------------------
    |
    | If your SMTP server requires a username for authentication, you should
    | set it here. This will get used to authenticate with your server on
    | connection. You may also set the "password" value below this one.
    |
    */

    'username' => env('MAIL_USERNAME'),

    /*
    |--------------------------------------------------------------------------
    | SMTP Server Password
    |--------------------------------------------------------------------------
    |
    | Here you may set the password required by your SMTP server to send out
    | messages from your application. This will be given to the server on
    | connection so that the application will be able to send messages.
    |
    */

    'password' => env('MAIL_PASSWORD'),

    /*
    |--------------------------------------------------------------------------
    | Sendmail System Path
    |--------------------------------------------------------------------------
    |
    | When using the "sendmail" driver to send e-mails, we will need to know
    | the path to where Sendmail lives on this server. A default path has
    | been provided here, which will work well on most of your systems.
    |
    */

    'sendmail' => '/usr/sbin/sendmail -bs',

    /*
    |--------------------------------------------------------------------------
    | Mail "Pretend"
    |--------------------------------------------------------------------------
    |
    | When this option is enabled, e-mail will not actually be sent over the
    | web and will instead be written to your application's logs files so
    | you may inspect the message. This is great for local development.
    |
    */

    'pretend' => false,

];
`

and I edited .env file like this already:

我已经编辑了这样的.env文件:

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=myemail@gmail.com
MAIL_PASSWORD=password
MAIL_ENCRYPTION=null

It still produced error like this: 如何在Laravel 5.1中使用Gmail发送邮件?

它仍然产生这样的错误:

9 个解决方案

#1


77  

first login to your gmail account and under My account > Sign In And Security > Sign In to google, enable two step verification, then you can generate app password, and you can use that app password in .env file.

首先登录您的Gmail帐户并在我的帐户>登录和安全>登录谷歌,启用两步验证,然后您可以生成应用程序密码,您可以在.env文件中使用该应用程序密码。

Your .env file will then look something like this

您的.env文件将看起来像这样

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=myemail@gmail.com
MAIL_PASSWORD=apppassword
MAIL_ENCRYPTION=tls

Don't forget to run php artisan config:cache after you make changes in your .env file.

在.env文件中进行更改后,不要忘记运行php artisan config:cache。

#2


15  

Try using sendmail instead of smtp driver (according to these recommendations: http://code.tutsplus.com/tutorials/sending-emails-with-laravel-4-gmail--net-36105)

尝试使用sendmail而不是smtp驱动程序(根据这些建议:http://code.tutsplus.com/tutorials/sending-emails-with-laravel-4-gmail--net-36105)

MAIL_DRIVER=sendmail
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=your@gmail.com
MAIL_PASSWORD=apppassword
MAIL_ENCRYPTION=tls

#3


10  

This is working sample that i have tried :

这是我尝试过的工作示例:

Open your mail.php under config folder then fill with this option :

在config文件夹下打开mail.php然后填写此选项:

'driver' => env('MAIL_DRIVER', 'smtp'),
'host' =>env('MAIL_HOST', 'smtp.gmail.com'),
'port' =>env('MAIL_PORT', 587),
'from' => ['address' =>'youremail@mail.com', 'name' => 'Email_Subject'],
'encryption' => env('MAIL_ENCRYPTION', 'tls'),
'username' =>env('MAIL_USERNAME','yourusername@mail.com'),
'password' =>env('MAIL_PASSWORD','youremailpassword'),
'sendmail' =>'/usr/sbin/sendmail -bs',

Open your .env file under root project. Also edit this file following above option such

在根项目下打开.env文件。也可以按照上面的选项编辑此文件

MAIL_DRIVER=smtp    
MAIL_HOST=smtp.gmail.com   
MAIL_PORT=587      
MAIL_USERNAME=youremailusername<br>
MAIL_PASSWORD=youremailpassword
MAIL_ENCRYPTION=tls

After that clear your config by running this command

之后,通过运行此命令清除配置

php artisan config:cache

Restart your local server

重新启动本地服务器

Try visit your route with controller contains mail function at first time it still error Authentication Required. You need to login via your gmail account to authorize untrusted connection. Visit this link to authorize

尝试访问您的路由与控制器包含邮件功能第一次它仍然错误身份验证必需。您需要通过您的Gmail帐户登录才能授权不受信任的连接。访问此链接进行授权

#4


8  

All you have to do is just edit in you.env file, that's it.

你所要做的就是在you.env文件中编辑,就是这样。

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

for app password goto https://support.google.com/accounts/answer/185833?hl=en

对于应用密码goto https://support.google.com/accounts/answer/185833?hl=en

and genearate your app pasword and save for future use. because once you generate app password you cannot re-edit password or change same app password.(you can create multiple app password)

并生成您的应用程序密码并保存以备将来使用。因为一旦您生成应用密码,您就无法重新编辑密码或更改相同的应用密码。(您可以创建多个应用密码)

#5


6  

if you still could be able to send mail after setting all configs right and get forbidden or timeout errors you could set the allow less secure apps to access your account in gmail. you can follow how to here

如果您仍然能够在设置所有配置正确并且被禁止或超时错误后发送邮件,您可以设置允许不太安全的应用程序来访问您的Gmail帐户。你可以按照这里的方式

#6


0  

your MAIL_PASSWORD=must a APPpasword after change the .env stop the server then clear configuratios cahce php artisan config:cahce and start the server again

你的MAIL_PASSWORD =更改.env后必须有APPpasword停止服务器然后清除configuratios cahce php artisan config:cahce并再次启动服务器

reference Cannot send message without a sender address in laravel 5.2 I have set .env and mail.php both

reference无法在laravel 5.2中发送没有发件人地址的邮件我已经设置了.env和mail.php

#7


0  

If you're developing on an XAMPP, then you'll need an SMTP service to send the email. Try using a MailGun account. It's free and easy to use.

如果您正在使用XAMPP进行开发,那么您将需要SMTP服务来发送电子邮件。尝试使用MailGun帐户。它免费且易于使用。

#8


0  

The problem for me is that for some reason the username/password came NULL from mail config. To check that before sending a email check with the follow code:

对我来说问题是由于某种原因,用户名/密码从邮件配置变为NULL。要在发送电子邮件之前检查一下,请检查以下代码:

dd(Config::get('mail'));

If your username/password came nulled just set with:

如果您的用户名/密码已取消,请设置为:

Config::set('mail.username', 'yourusername');
Config::set('mail.password', 'yourpassword');

#9


0  

in bluehost i could not reset password; with this driver worked:

在bluehost我无法重置密码;用这个驱动程序工作:

MAIL_DRIVER=sendmail

#1


77  

first login to your gmail account and under My account > Sign In And Security > Sign In to google, enable two step verification, then you can generate app password, and you can use that app password in .env file.

首先登录您的Gmail帐户并在我的帐户>登录和安全>登录谷歌,启用两步验证,然后您可以生成应用程序密码,您可以在.env文件中使用该应用程序密码。

Your .env file will then look something like this

您的.env文件将看起来像这样

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=myemail@gmail.com
MAIL_PASSWORD=apppassword
MAIL_ENCRYPTION=tls

Don't forget to run php artisan config:cache after you make changes in your .env file.

在.env文件中进行更改后,不要忘记运行php artisan config:cache。

#2


15  

Try using sendmail instead of smtp driver (according to these recommendations: http://code.tutsplus.com/tutorials/sending-emails-with-laravel-4-gmail--net-36105)

尝试使用sendmail而不是smtp驱动程序(根据这些建议:http://code.tutsplus.com/tutorials/sending-emails-with-laravel-4-gmail--net-36105)

MAIL_DRIVER=sendmail
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=your@gmail.com
MAIL_PASSWORD=apppassword
MAIL_ENCRYPTION=tls

#3


10  

This is working sample that i have tried :

这是我尝试过的工作示例:

Open your mail.php under config folder then fill with this option :

在config文件夹下打开mail.php然后填写此选项:

'driver' => env('MAIL_DRIVER', 'smtp'),
'host' =>env('MAIL_HOST', 'smtp.gmail.com'),
'port' =>env('MAIL_PORT', 587),
'from' => ['address' =>'youremail@mail.com', 'name' => 'Email_Subject'],
'encryption' => env('MAIL_ENCRYPTION', 'tls'),
'username' =>env('MAIL_USERNAME','yourusername@mail.com'),
'password' =>env('MAIL_PASSWORD','youremailpassword'),
'sendmail' =>'/usr/sbin/sendmail -bs',

Open your .env file under root project. Also edit this file following above option such

在根项目下打开.env文件。也可以按照上面的选项编辑此文件

MAIL_DRIVER=smtp    
MAIL_HOST=smtp.gmail.com   
MAIL_PORT=587      
MAIL_USERNAME=youremailusername<br>
MAIL_PASSWORD=youremailpassword
MAIL_ENCRYPTION=tls

After that clear your config by running this command

之后,通过运行此命令清除配置

php artisan config:cache

Restart your local server

重新启动本地服务器

Try visit your route with controller contains mail function at first time it still error Authentication Required. You need to login via your gmail account to authorize untrusted connection. Visit this link to authorize

尝试访问您的路由与控制器包含邮件功能第一次它仍然错误身份验证必需。您需要通过您的Gmail帐户登录才能授权不受信任的连接。访问此链接进行授权

#4


8  

All you have to do is just edit in you.env file, that's it.

你所要做的就是在you.env文件中编辑,就是这样。

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

for app password goto https://support.google.com/accounts/answer/185833?hl=en

对于应用密码goto https://support.google.com/accounts/answer/185833?hl=en

and genearate your app pasword and save for future use. because once you generate app password you cannot re-edit password or change same app password.(you can create multiple app password)

并生成您的应用程序密码并保存以备将来使用。因为一旦您生成应用密码,您就无法重新编辑密码或更改相同的应用密码。(您可以创建多个应用密码)

#5


6  

if you still could be able to send mail after setting all configs right and get forbidden or timeout errors you could set the allow less secure apps to access your account in gmail. you can follow how to here

如果您仍然能够在设置所有配置正确并且被禁止或超时错误后发送邮件,您可以设置允许不太安全的应用程序来访问您的Gmail帐户。你可以按照这里的方式

#6


0  

your MAIL_PASSWORD=must a APPpasword after change the .env stop the server then clear configuratios cahce php artisan config:cahce and start the server again

你的MAIL_PASSWORD =更改.env后必须有APPpasword停止服务器然后清除configuratios cahce php artisan config:cahce并再次启动服务器

reference Cannot send message without a sender address in laravel 5.2 I have set .env and mail.php both

reference无法在laravel 5.2中发送没有发件人地址的邮件我已经设置了.env和mail.php

#7


0  

If you're developing on an XAMPP, then you'll need an SMTP service to send the email. Try using a MailGun account. It's free and easy to use.

如果您正在使用XAMPP进行开发,那么您将需要SMTP服务来发送电子邮件。尝试使用MailGun帐户。它免费且易于使用。

#8


0  

The problem for me is that for some reason the username/password came NULL from mail config. To check that before sending a email check with the follow code:

对我来说问题是由于某种原因,用户名/密码从邮件配置变为NULL。要在发送电子邮件之前检查一下,请检查以下代码:

dd(Config::get('mail'));

If your username/password came nulled just set with:

如果您的用户名/密码已取消,请设置为:

Config::set('mail.username', 'yourusername');
Config::set('mail.password', 'yourpassword');

#9


0  

in bluehost i could not reset password; with this driver worked:

在bluehost我无法重置密码;用这个驱动程序工作:

MAIL_DRIVER=sendmail