Laravel 中的邮件发送

在 Laravel 中,可以通过 Mail 接口的 send 方法来进行邮件发送,示例如下:

$view = 'emails.confirm';
$data = compact('user');
$from = 'xxx@163.com';
$name = 'Narcissus';
$to = $user->email;
$subject = "感谢您的注册!请确认你的邮箱。";

Mail::send($view, $data, function ($message) use ($from, $name, $to, $subject) {
    $message->from($from, $name)->to($to)->subject($subject);
});

Mailsend 方法接收三个参数。

  • 第一个参数是包含邮件消息的视图名称。
  • 第二个参数是要传递给该视图的数据数组。
  • 最后是一个用来接收邮件消息实例的闭包回调,我们可以在该回调中自定义邮件消息的发送者、接收者、邮件主题等信息。

发送邮件可以分为:

测试环境发送邮件

在测试环境中我们可以将 .env 文件的邮件发送驱动设置为 log 邮件驱动,这么做邮件不会被真发送出去,而是会被记录在 storage/logs/laravel.log 文件中。

MAIL_DRIVER=log

在这里插入图片描述

生产环境发送邮件

在生产环境中发送邮件需要配置 .env ,以 163 邮箱为例:

MAIL_DRIVER=smtp
MAIL_HOST=smtp.163.com
MAIL_PORT=25
MAIL_USERNAME=xxx@163.com
MAIL_PASSWORD=xxxx
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=xxxx@163.com
MAIL_FROM_NAME=LaravelSample

分析:

  • MAIL_DRIVER=smtp —— 使用支持 ESMTP 的 SMTP 服务器发送邮件;
  • MAIL_HOST=smtp.163.com —— 163 邮箱的 SMTP 服务器地址,tls 加密方式必须为此值;
  • MAIL_PORT=25 —— 163 邮箱的 SMTP 服务器端口,必须为此值;
  • MAIL_USERNAME=xxxxxxxxxxxxxx@163.com —— 请将此值换为你的 163 邮箱;
  • MAIL_PASSWORD=xxxxxxxxx —— 密码是我们 163 邮箱的授权码,不知道如果获取的请参看获取邮箱授权码
  • MAIL_ENCRYPTION=tls —— 加密类型,选项 null 表示不使用任何加密,其他选项还有 ssl,这里我们使用 tls 即可。
  • MAIL_FROM_ADDRESS=xxxxxxxxxxxxxx@163.com —— 此值必须同 MAIL_USERNAME 一致;
  • MAIL_FROM_NAME=SampleApp —— 用来作为邮件的发送者名称。

此时不再需要 from 方法了:

$view = 'emails.confirm';
        $data = compact('user');
        $to = $user->email;
        $subject = "感谢注册!请确认你的邮箱。";

        Mail::send($view, $data, function ($message) use ($to, $subject) {
            $message->to($to)->subject($subject);
        });

在这里插入图片描述

参考
https://learnku.com/docs/laravel/5.5/mail/1321

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值