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

相关推荐
CRMEB系统商城1 小时前
CRMEB多商户系统(Java)v2.3公测版发布
java·开发语言·人工智能·小程序·开源·php
修炼室2 小时前
外网环境原生直连校内服务器:基于内网穿透 + SSH 密钥认证的完整实践指南
服务器·ssh·php
BingoGo4 小时前
PHP 在领域驱动(DDD)设计中的核心实践
后端·php
2601_961194026 小时前
考研资料电子版|去哪找|网盘
java·c语言·c++·python·考研·php
嘶哈哈哈6 小时前
嘉立创 EDA 入门实操笔记:从原理图到 PCB 布线、差分对、覆铜与 DRC 检查
开发语言·笔记·php
爱装代码的小瓶子8 小时前
3. 设计buffer模块
linux·服务器·开发语言·c++·php
狗凯之家源码网9 小时前
APP 软件官网整站源码效果实测与价值解析
开源·php
m0_738120729 小时前
渗透测试基础——PHP 序列化数据结构与反序列化机制详解
android·服务器·网络·数据结构·安全·php
AC赳赳老秦9 小时前
用 OpenClaw 制定技术学习计划:根据目标岗位自动生成学习路线、推荐学习资源
开发语言·c++·人工智能·python·mysql·php·openclaw
宁小法11 小时前
Redis evalsha 可能返回的错误类型
redis·php·lua报错