laravel发送邮件

1,095 阅读1分钟

一、给新用户发送邮件

1.1 配置邮箱

phpmailer也是一种解决发送类,当然laravel自带就能发邮件的类。

邮件发送类 Mail类 1、文本 静态方法raw() 2、富文本 静态方法send()

实现发送邮件,必须一个发送邮件的账号,需要开启stmp协议,现在主流的邮件服务器都是支持的。 stmp默认端口25。但是默认没有打开,需要使用时自行打开。 以qq邮箱为例:https://mail.qq.com 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

1.2 配置laravel发送邮件配置

配置文件.env 在这里插入图片描述 在这里插入图片描述

1.3 测试发邮件

1、文本文件

        // 发送邮件
    Route::get('user/email', function () {
        \Mail::raw('测试一下发邮件', function (\Illuminate\Mail\Message $message) {
            // 获取回调方法中的形参
            dump(func_get_args());

            // 发送谁
            $message -> to('用户qq邮箱这边先写我们自己的供测试', 'Justin');

            // 主题
            $message -> subject('测试邮件');

        });
    });

在这里插入图片描述

浏览器搜索栏重新输入http://laravelproject.com/admin/user/email

效果: 在这里插入图片描述

2、富文本文件 UserController.php控制器代码:

<?php
// 后台用户管理
namespace App\Http\Controllers\Admin;

use Illuminate\Http\Request;
use Faker\Provider\Base;
use App\Models\User;
use Mail;
use Illuminate\Mail\Message;

class UserController extends BaseController
{
    
    // 用户列表
    public function index() {
        // echo $this->pagesize;
        // 分页  withTrashed()显示所有的,包括已经进行了软删除的
        $data = User::orderBy('id', 'desc') -> withTrashed() -> paginate($this->pagesize);
        return view('admin.user.index', compact('data'));
    }

    // 用户增加显示
    public function add() {
        return view('admin.user.add');
    }

    // 用户添加处理
    public function create(Request $request) {

        $this->validate($request, [
            // 唯一性验证 
            'username' => 'required|unique:users,username',
            // 'account' => 'required',
            'phone' => 'phone',
            'email' => 'required',
            'password' => 'required|confirmed',
        ]);
        // dump($request -> all());

        // 获取表单数据
        $post = $request -> except(['_token', 'password_confirmation']);
        // 添加用户入库
        $userModel = User::create($post);
        // dump($userModel);
        // 密码
        $pwd = $post['password'];
        // 发邮件给用户  (匿名函数传入外部变量 用use)
        Mail::send('mail.useradd', compact('userModel', 'pwd'), function(Message $message) use ($userModel){
            // 发给谁
            $message ->to($userModel -> email);

            // 主题
            $message -> subject('开通账户邮件通知');
        });

        // 跳转到列表页
        return redirect(route('admin.user.index')) -> with('success', '添加用户成功');

    }

    // 删除用户操作
    public function del(int $id) {
        // 软删除
        User::find($id) -> delete();

        // 强制删除 在配置了软删除的时候,真实的删除操作
        // User::find($id) -> forceDelete();

        return ['status' => 0, 'msg' => '删除成功'];
    }

    // 恢复用户
    public function restore(int $id) {
        // 还原
        User::onlyTrashed() -> where('id', $id) -> restore();
        return redirect(route('admin.user.index')) -> with('success', '还原成功');
    } 

    // 全选删除用户
    public function delall (Request $request) {
        $ids = $request -> get('id');
        User::destroy($ids);
        return ['status' => 1, 'msg' => '全选删除成功'];
    }

    
} 
  

在这里插入图片描述 useradd.blade.php代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <style>
        .jt {
            color: #808080;
        }
    </style>
</head>
<body>
<div class="jt">
    <div>您的账号:{{$userModel -> username}}</div>
    <div>您的密码:{{$pwd}}</div>
    <div>您的手机号:{{$userModel -> phone}}</div>
</div>
</body>
</html>

我们去添加一名新用户,会发现邮箱也发过来了: 在这里插入图片描述

在学习的php的路上,如果你觉得本文对你有所帮助的话,那就请关注点赞评论三连吧,谢谢,你的肯定是我写博的另一个支持。