前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Laravel 发送邮件示例

Laravel 发送邮件示例

作者头像
无道
发布2019-11-13 15:58:37
1.7K0
发布2019-11-13 15:58:37
举报
文章被收录于专栏:无道编程无道编程

发送邮件

参考:https://learnku.com/docs/laravel/5.6/mail/1392

配置文件

配置.env文件

如下配置:

代码语言:javascript
复制
MAIL_DRIVER=smtp
MAIL_HOST=邮件服务器地址 如:smtp.misiyu.cn
MAIL_PORT=端口,如:25
MAIL_USERNAME=用户名,如:smtp@misiyu.cn
MAIL_PASSWORD=密码
MAIL_ENCRYPTION=null

详细解释:

  • 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,其他要么付费要么不能用。
  • host:邮箱所在主机,使用163邮箱,对应值是smtp.163.com,使用QQ邮箱,对应值是smtp.qq.com。使用腾讯企业邮箱,对应值是smtp.exmail.qq.com
  • port:用于配置邮箱发送服务端口号,一般默认值是25,但如果设置SMTP使用SSL加密,该值为465。
  • from:配置项包含address和name,前者表示你自己的邮箱,后者表示你邮件用户名(这里邮箱,是用来发邮件的邮箱)。
  • encryption:表示加密类型,可以设置为null表示不使用任何加密,也可以设置为tls或ssl。
  • username: 表示邮箱账号,比如123456789@qq.com
  • password 表示上述邮箱登录对应登录密码。注意QQ邮箱的话应该开启POP3|SMTP服务时给的授权码。
  • sendmail: 是在设置driver为sendmail时使用,用于指定sendmail命令路径。
  • pretend: 用于配置是否将邮件发送记录到日志中,默认为false则发送邮件不记录日志,如果为true的话只记录日志不发送邮件,这一配置在本地开发中调试时很有用

必须一提的是,在新版Laravel中,.env文件的配置项不够,比如没有MAIL_FROM_ADDRESS

会出现如下错误:

截图-1562244362
截图-1562244362

所以必须打开config/mail.php配置,from

截图-1562244306
截图-1562244306

这里我是直接在.env文件添加了:

截图-1562244428
截图-1562244428

生成控制器

代码语言:javascript
复制
php artisan make:controller Common/MailController
截图-1562242993
截图-1562242993

配置测试路由

代码语言:javascript
复制
Route::get('/testMail', 'Common\MailController@send');

控制器逻辑

代码语言:javascript
复制
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Mail;

class MailController extends Controller
{
    //
    public function send()
    {
        $name = '我发的第一份邮件';
        // Mail::send()的返回值为空,所以可以其他方法进行判断
        Mail::send('emails.test',['name'=>$name],function($message){
            $to = '123456789@qq.com'; $message ->to($to)->subject('邮件测试');
        });
        // 返回的一个错误数组,利用此可以判断是否发送成功
        dd(Mail::failures());
    }
}

Mail::send();需要传三个参数,第一个为引用的模板,第二个为给模板传递的变量(邮箱发送的文本内容),第三个为一个闭包,参数绑定Mail类的一个实例。

常见模板文件

resources/views/emails下创建一个模板文件(比如:CommentMail)。

代码语言:javascript
复制
{{$name}} 你好,这是一封测试邮件。

好了,访问http://localhost/testMail

打印出空白数组便是发送成功了[]

截图-1562244570
截图-1562244570
截图-1562244504
截图-1562244504

这里我是到了垃圾箱,但是发送成功了。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-07-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 发送邮件
    • 配置文件
      • 生成控制器
        • 配置测试路由
          • 控制器逻辑
            • 常见模板文件
            相关产品与服务
            腾讯企业邮
            腾讯企业邮(Tencent Exmail)是腾讯基于多年海量用户邮件系统研发和运营经验,为企业量身订造的一套办公用邮箱系统。稳定、简洁和快速,整合了丰富的企业应用,涵盖资源共享、消息发布、组织管理等方面。腾讯企业邮和微信生态深度整合,为您提供便捷高效的移动邮件解决方案。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档