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发送验证码邮件。

相关推荐
kdniao19 小时前
PHP 页面中如何实现根据快递单号查询物流轨迹?对接快递鸟在途监控 API 实操
android·开发语言·php
郑州光合科技余经理9 小时前
同城配送调度系统实战:JAVA微服务
java·开发语言·前端·后端·微服务·中间件·php
码界奇点9 小时前
基于eBPF技术的高性能网络防火墙系统设计与实现
开发语言·网络·毕业设计·php·wpf·go语言·源代码管理
m0_7482299912 小时前
Laravel4.x核心更新全解析
开发语言·php
h7ml13 小时前
电商返利系统中佣金计算的幂等性保障与对账补偿机制实现
服务器·前端·php
北辰当尹13 小时前
【小迪安全2023】day43 php应用&SQL注入&符号拼接&请求方法&HTTP头&JSON&编码类
sql·安全·php
csdn_aspnet13 小时前
PHP常用算法解析:从Web开发到性能优化的实战
php
嵌入式×边缘AI:打怪升级日志13 小时前
Libmodbus 源码总体分析:框架、数据结构与核心函数详解
开发语言·数据结构·php
Remember_99313 小时前
Spring 中 REST API 调用工具对比:RestTemplate vs OpenFeign
java·网络·后端·算法·spring·php
北辰当尹1 天前
【小迪安全2023】day42 php应用&mysql架构&sql注入&跨库查询&文件读写&权限操作
mysql·安全·php