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

相关推荐
CryptoRzz4 小时前
印度股票数据 PHP 对接文档 覆盖 BSE(孟买证券交易所)和 NSE(印度国家证券交易所)的实时数据
android·服务器·开发语言·区块链·php
JaguarJack7 小时前
进阶学习 PHP 中的二进制和位运算
后端·php
q***133410 小时前
电脑可以连接wifi,但是连接后仍然显示没有网络
网络·电脑·php
亿坊电商1 天前
PHP框架的资源管理机制如何优雅适配后台任务?
开发语言·php
onebound_noah1 天前
电商图片搜索:技术破局与商业落地,重构“视觉到交易”全链路
大数据·前端·网络·人工智能·重构·php
JSON_L1 天前
Fastadmin部署访问404问题
php·fastadmin
代码狂想家1 天前
Rust 命令行密码管理器工具开发
开发语言·rust·php
遇见火星2 天前
Linux 网络性能测试实战:用 iperf3 精准测出真实带宽与丢包率
linux·网络·php·iperf3
DKunYu2 天前
5.网络原理之TCP_IP
网络·tcp/ip·php