Laravel 发送邮件(适用于生产环境)

Laravel 发送邮件(适用于生产环境)

1. 应用场景

  • 系统邮件发送量较小,暂时不需要另外购买邮件发送服务。

  • 系统开发阶段,进行邮件发送测试。

  • 在用户注册的时候发送账户激活邮件,验证电子邮件。

2. 前期准备

  • 开启了 POP3SMTP服务的 QQ 邮箱。

具体可查看QQ邮箱官方说明:如何开启 QQ 邮箱的POP3/SMTP/IMAP功能?

3. 使用 Laravel 组件 Mail 发送邮件的具体步骤

在开始之前,请仔细阅读 Mail 的官方文档。

Step 1:配置邮件发送服务

在项目目录下的.env文件或者 config/mail.php文件对邮件发送服务进行配置,具体设置如下:

MAIL_DRIVER=smtp
MAIL_HOST=smtp.qq.com
MAIL_PORT=465
[email protected]
MAIL_PASSWORD=zwntejlaeklqbhbj
MAIL_ENCRYPTION=ssl
[email protected]
MAIL_FROM_NAME=YourAppName

MAIL_USERNAMEMAIL_FROM_ADDRESS 的值必须一致,都是设置为你的QQ邮箱地址。MAIL_PASSWORD的值实在开启邮箱POP3/SMTP功能时获取的一个密码(注意:不是 QQ 邮箱网页登陆密码!!!)。其他配置复制就可以。

Step 2:生成 mailable类,设置邮件 view 并将视图中需要的用户数据传递到邮件 view

运行:

php artisan make:mail SendConfimrEmail

生成的 SendConfirmEmail.php位于app/Mail 目录下。

SendConfirmEmail.php中需要进行以下 4 处内容添加:

  1. 添加use App\User

  2. 定义 public $user

  3. __construct()中给 $user赋值

  4. build()方法中返回邮件view

说明: public $user$this->user = $user 用于传递数据给邮件 view。请参阅官方文档

namespace App\Mail;
​
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;
use App\User;
​
class verificationEmail extends Mailable
{
 use Queueable, SerializesModels;
​
​
​
​
 public $user;
​
 /**
 * Create a new message instance.
 *
 * @return void
 */
 public function __construct(User $user)
 {
 //
 $this->user = $user;
​
 }
​
 /**
 * Build the message.
 *
 * @return $this
 */
 public function build()
 {
 return $this->view('emails.email_verify');
​
 }
}

emails.email_verify为事先写好的email view。具体内容可参考以下:

@section('content')
​
 

Email Verification

请点击下面的链接验证电子邮箱: {{ route('email_verification', $user->activation_token) }}

如非人的操作,请忽略此邮件。

​@stop

最后在任何需要发送邮件的地方添加:

Mail::to($user)
 ->send(new verificationEmail($user));

你可能感兴趣的:(Laravel 发送邮件(适用于生产环境))