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

相关推荐
渣渣盟20 小时前
当 Redis 写入成为性能瓶颈时,如何利用 异步批量 Sink 将吞吐量从 1w QPS 提升到 10w+?
数据库·redis·php
XR1234567881 天前
工业园区整体组网,方案对比怎么选?
开发语言·php
️学习的小王1 天前
二级MySQL PHP综合应用题完整考点+历年真题风格练习题
android·mysql·php
别动我齐刘海1 天前
Day10 unitree_G1人形机器人BVH/MocapApi实际输出少于Axis
开发语言·php
2601_965798472 天前
Is Piroll WordPress Theme Worth It for Freelancers? Full Review
数据库·php
zero_70322 天前
HCIP 课程文字版思维导图笔记
服务器·网络·php
abbgogo2 天前
OSPF动态路由协议
开发语言·php
大鱼>2 天前
共识算法:从PBFT到HotStuff的拜占庭容错演进
区块链·php·共识算法
正在走向自律3 天前
使用atop工具监控Linux系统指标
linux·运维·php·实时监控·atop分析内存
2401_894915533 天前
Geo 优化源码部署常见报错排查:连接失败、地图加载、地域词失效解决方案
服务器·开发语言·python·安全·php