Laravel自带邮件发送功能的实现

我用163和qq已经实现了

很狗血的是我头一天搞了半天总是发送失败,说连接不上服务,第二天到公司一发送就成功了,不知道是不是应该重新访问以下项目或者重启服务

我推测是因为 .env文件修改了没有生效,我在子系统做的项目,所以需要结束项目重新运行命令:php artisan serve , 每次修改了 .env 文件都要

进入正题

需要注意的是:需要开启POP3和SMTP服务。开启方式如下:

网页登录邮箱,点击进入设置就会看到


Laravel自带邮件发送功能的实现_第1张图片
开启服务

当开启成功会生成密钥,这个东西会在配置中用到(注意这个授权码只能看一次,以后要看只能修改,先拿小本本记下来)


Laravel自带邮件发送功能的实现_第2张图片
查看授权码


给出.env中的配置

MAIL_DRIVER=smtp

MAIL_HOST=smtp.163.com

MAIL_PORT=25

[email protected]

MAIL_PASSWORD=授权码

MAIL_ENCRYPTION=

[email protected]

MAIL_FROM_NAME=

这些是在 config 中mail.php 用到的

1. driver用于配置默认的邮件发送驱动,Laravel支持多种邮件驱动方式,包括smtp、Mailgun、Maildrill、Amazon SES、mail和sendmail,Mailgun和Amazon SES都是收费的Maildrill目前不支持中国区用户,这三个都是第三方邮件服务。mail驱动使用PHP提供的mail函数发送,sendmail驱动通过Sendmail/Postfix(Linux)提供的命令发送邮件,smtp驱动通过支持ESMTP的SMTP发送邮件。

就目前状况来看,使用smtp是最明智的选择,mail不安全,sendmail需要安装配置Sendmail/Postfix,其他要么付费要么不能用。

2. host是邮箱所在主机,比如我们使用163邮箱,对应值是smtp.163.com,使用QQ邮箱的话,对应值是smtp.qq.com。

3. port用于配置邮箱发送服务端口号,比如一般默认值是25,但如果设置SMTP使用SSL加密,该值为465。

4. from配置项包含address和name,前者表示发送邮箱,后者表示发送邮件使用的用户名。

5. encryption表示加密类型,可以设置为null表示不使用任何加密,也可以设置为tls或ssl。

6. username表示邮箱账号,比如[email protected]

7. password表示上述邮箱登录对应登录密码。注意QQ邮箱的话应该开启POP3|SMTP服务时给的密钥。

8. sendmail是在设置driver为sendmail时使用,用于指定sendmail命令路径。

下边是控制器代码:

首先引入类

use Mail;

使用方法:

$res = ['email'=>$data['email'],'name'=>$data['email'],'token'=>$token];

Mail::send('emails.test',$res,function($message)use($res) {

    $to = $res['email'];

    $message ->to($to)->subject('欢迎注册本网站,请尽快激活您的账号!');

});

在resources/view中新建末班文件 emails/test.blade.php

{{$name}}你好,这是一封测试文件。

目前就只是发送普通文本携带变量,其他的比如附件当然也可以。

你可能感兴趣的:(Laravel自带邮件发送功能的实现)