Fastadmin中发送邮件验证码

首先需要有一个邮箱,没有就注册一个,最好是163邮箱。

本文将使用163邮箱讲解发送邮件的配置及使用fastadmin发送验证码邮件。

目录

Fastadmin版本号

开启邮箱smtp服务

开启POP3/SMTP服务

Fastadmin邮件配置

发送邮件

调用方法

前端接口

总结


Fastadmin版本号

1.6.1.20250430

开启邮箱smtp服务

想操控邮箱发送邮件,需要开启邮箱的POP3/SMTP/IMAP服务。

打开SMTP设置

在邮箱中【设置】->【POP3/SMTP/IMAP】中。

如下:

开启POP3/SMTP服务

进入POP3/SMTP/IMAP页面后,开启POP3/SMTP服务,记录授权密码。

Fastadmin邮件配置

在后台中常规配置>系统配置>邮件配置中

输入smtp服务器、端口号、邮箱、授权密码(开启pop3/smtp获取的授权密码)、发送人邮箱。

发送邮件

配置上述参数后,点击发送测试邮件,输入收件人邮箱之后确定,即可发送邮箱如下:

调用方法

后台的配置调用发送测试邮件方法位于:admin/controller/general/config.php中。

如下:

发送测试邮件如下:

前端接口

当后端配置好邮件配置后,前端发送邮件即可使用。

发送邮件验证码位于:

Api/controller/Ems.php文件中的send方法,如下:

php 复制代码
public function send()
{
    $email = $this->request->post("email");
    $event = $this->request->post("event");
    $event = $event ? $event : 'register';

    if (!$email || !filter_var($email, FILTER_VALIDATE_EMAIL)) {
        $this->error(__('邮箱格式错误'));
    }
    if (!preg_match("/^[a-z0-9_\-]{3,30}\$/i", $event)) {
        $this->error(__('事件名称错误'));
    }

    $last = Emslib::get($email, $event);
    if ($last && time() - $last['createtime'] < 60) {
        $this->error(__('发送频繁'));
    }

    $ipSendTotal = \app\common\model\Ems::where(['ip' => $this->request->ip()])->whereTime('createtime', '-1 hours')->count();
    if ($ipSendTotal >= 5) {
        $this->error(__('发送频繁'));
    }

    if ($event) {
        $userinfo = User::getByEmail($email);
        if ($event == 'register' && $userinfo) {
            //已被注册
            $this->error(__('已被注册'));
        } elseif (in_array($event, ['changeemail']) && $userinfo) {
            //被占用
            $this->error(__('已被占用'));
        } elseif (in_array($event, ['changepwd', 'resetpwd']) && !$userinfo) {
            //未注册
            $this->error(__('未注册'));
        }
    }
    $ret = Emslib::send($email, null, $event);
    if ($ret) {
        $this->success(__('发送成功'));
    } else {
        $this->error(__('发送失败'));
    }
}

发送验证码邮件如下:

总结

本文将使用163邮箱讲解发送邮件的配置及使用fastadmin发送验证码邮件。

相关推荐
WeiXin_DZbishe2 小时前
基于微信小程序的本地闲置物品交易平台-计算机毕设 附源码【课程设计】26825
vue.js·spring boot·python·微信小程序·架构·php·课程设计
唐青枫3 小时前
Yii2 Controller 详解:路由、Action、过滤器与 CRUD 实战
php
WeiXin_DZbishe3 小时前
基于Node.js的马拉松赛事管理系统的设计与实现-计算机毕设 附源码【课程设计】90211
java·javascript·vue.js·python·php·课程设计
郑州光合科技余经理6 小时前
出海外卖平台:支付对接为什么要和下单收款分开
android·java·开发语言·前端·后端·php·ai编程
谢亮_vipxieliang6 小时前
PHP 异常处理全解析:try-catch、自定义异常与全局异常处理器
开发语言·php
JaguarJack7 小时前
免费可商用 PHP 管理后台 CatchAdmin V5.4.1 发布,新增 MCP 支持
后端·php·laravel·服务端
BingoGo7 小时前
免费可商用 PHP 管理后台 CatchAdmin V5.4.1 发布,新增 MCP 支持
后端·php
谢亮_vipxieliang7 小时前
多智能体系统的“TCP/IP时刻”:MCP与A2A协议如何定义Agent时代
网络·tcp/ip·ai·php
cleble7 小时前
怎么用用 PowerShell 下载文件
开发语言·php
北京盛世宏博18 小时前
工业环境监测选型:Modbus TCP以太网温湿度传感器部署、调试、避坑全指南
开发语言·网络·php