网页大作功能实现示例:邮箱验证、AI接入

网页大作业实现步骤

  • 一、邮箱短信验证
  • 二、AI文心一言接口实现
  • 三、markdown.js引用
  • 四、hightlight库的引用

一、邮箱短信验证

要完成短信验证功能,需要有个专用的邮箱账号向登录的邮箱发送验证码,因为我主要使用QQ邮箱,所有我这里用QQ邮箱申请授权码。

1.登录"QQ邮箱"官网客户端,QQ邮箱官网

2.在顶部的设置中找到账号选项

3.下滑找到验证并开启POP3/SMTP服务 ,点击管理服务

4.点击安全设置-生成授权码

4.手机号验证生成授权码。

设备管理-授权码就可以看到刚才生成的授权码了

5.官网有技术文档,不过我这里使用API接口对接,主打方便。

API接口:https://luckycola.com.cn/tools/customMail
请求方式: POST

  • 请求参数如下
序号 参数 是否必须 说明
1 ColaKey 唯一验证ColaKey
2 tomail 目标邮箱地址
3 fromTitle 邮件标题
4 subject 邮件主题
5 content 邮件内容(可以是纯文本,也可以是html)
6 isTextContent 邮件内容是否是文本形式,默认是false(html形式)
7 smtpCode 邮件系统授权码
8 smtpEmail 开启授权码对应的授权邮箱
9 smtpCodeType 授权邮箱的类型, 可取值是 qq 或 163 或 126
  • 请求示例如下
javascript 复制代码
{
    "ColaKey": "i6qNeQszeSD6zf16988I2YaRNIMz",
    "tomail": "xxx@qq.com",// 邮件发给谁?
    "fromTitle": "邮件标题",// 邮件标题
    "subject": "邮件主题",
    // 邮件系统授权码
    "smtpCode": "官网申请",
    // 开启授权码对应的授权邮箱
    "smtpEmail": "3036611072@qq.com",
    // 授权邮箱的类型, 可取值是 qq 或 163 或 126
    "smtpCodeType": "qq",//这里用QQ
    "isTextContent": false,// 邮件内容是否是纯文本形式
    "content": "<div style='color: red'>我是邮件内容(因为isTextContent=false所以我可以解析html标签,)</div>",// 邮件内容
}
  • 如果想让文本内容为html格式, 参数isTextContent 设置为false,写入html样式,大作业的示例:
javascript 复制代码
{
            ColaKey: "FJVIY21aiQEJyw17321120746940vp08Kg2yK",
            tomail: email,
            fromTitle: "验证码邮件",
            subject: "您的验证码",
            smtpCode: "vmmpotyiqjlbdeib",
            smtpEmail: "3036611072@qq.com",
            smtpCodeType: "qq",
            isTextContent: false,
            content: `
                <div style="
                    max-width: 600px;
                    margin: 0 auto;
                    padding: 20px;
                    background: #f8f9fa;
                    border-radius: 10px;
                    box-shadow: 0 2px 10px rgba(0,0,0,0.1);
                    font-family: Arial, sans-serif;
                ">
                    <h2 style="
                        color: #333;
                        margin-bottom: 20px;
                        text-align: center;
                        font-size: 24px;
                    ">邮箱验证码</h2>
                    <div style="
                        background: white;
                        padding: 20px;
                        border-radius: 8px;
                        text-align: center;
                        margin-bottom: 20px;
                    ">
                        <p style="
                            color: #666;
                            font-size: 16px;
                            margin-bottom: 15px;
                        ">您的验证码是:</p>
                        <div style="
                            font-size: 32px;
                            font-weight: bold;
                            color: #1890ff;
                            letter-spacing: 5px;
                            margin: 10px 0;
                        ">${generatedCode}</div>
                    </div>
                    <p style="
                        color: #999;
                        font-size: 14px;
                        text-align: center;
                        margin: 0;
                    ">请在5分钟内完成验证,验证码将在5分钟后失效。</p>
                    <div style="
                        margin-top: 20px;
                        padding-top: 20px;
                        border-top: 1px solid #eee;
                        text-align: center;
                        color: #666;
                        font-size: 14px;
                    ">
                        <p style="margin: 0;">
                            本邮件来自
                            <span style="
                                color: #1890ff;
                                font-weight: bold;
                            ">网页设计课程第15小组</span>
                        </p>
                    </div>
                </div>
            `
        };

二、AI文心一言接口实现

1.文心一言官网已经开放了许多API,申请加入,可以在百度智能云创建应用,获取该应用的api keyapp key

2.然后接入模型就行,有对应的代码调用示例

3.请求示例

API接口:https://luckycola.com.cn/tools/customMail
请求方式: POST

  • 请求参数如下
序号 参数 是否必须 说明
1 ques 你的问题
2 appKey 唯一验证AppKey
3 uid 唯一标识
4 isLongChat 是否支持上下文(值为1或者0),1表示支持上下文,默认值0不支持
5 chatModel 自定义使用的模型,可以传值"botChat"、"bot7bChat"、"turboChat",不传默认值是"turboChat"
6 isStream 是否使用流响应格式,默认false
javascript 复制代码
{
	// 你的问题
   "ques": "hello",
   // Appkey
   "appKey": "",
   // 用户ID
   "uid": "",
   // 是否支持上下文 值1表示支持,0表示不支持
   "isLongChat": 0,
   // 自定义使用的模型,可以取值"botChat"、"bot7bChat"、"turboChat",不传默认是"turboChat"
   "chatModel": "bot7bChat",
   // 响应是否流格式,默认false
   "isStream": false
}

4.大作业的接口调用示例

javascript 复制代码
 try {
      // 调用API发送消息
      const response = await fetch('https://luckycola.com.cn/ai/wxChatV2', {
          method: 'POST',
          headers: {
              'Content-Type': 'application/json'
          },
          body: JSON.stringify({
              ques: message,
              appKey: '6510f04a64f84d2bd1e1b574',
              uid: '6tKNwN1695608881881H1QZe1gEnt',
              isLongChat: 1,
              chatModel: 'turboChat',
              isStream: false
          })
      });

三、markdown.js引用

1.其中AI回复的内容实际上是markdown文本格式,而且与html格式是相互兼容的,为了将内容渲染成markdown文本,引用公开的markdown库

javascript 复制代码
 <script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>

2.实时渲染

javascript 复制代码
<script>
  const converter = new showdown.Converter();
  const markdownInput = document.getElementById("markdown");
  const outputDiv = document.getElementById("output");

  markdownInput.addEventListener("input", () => {
    const markdownText = markdownInput.value;
    outputDiv.innerHTML = converter.makeHtml(markdownText);
  });
</script>

四、hightlight库的引用

如果AI回复的内容有代码块,只能以文本的方式输出,例如下面:

1.首先下载公开的hightlight.js文件

3.引用和渲染

javascript 复制代码
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/atom-one-dark.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
javascript 复制代码
<script>
    // 确保 Highlight.js 的样式初始化
    hljs.highlightAll();

    //使用 Highlight.js
    marked.setOptions({
      highlight: function (code, language) {
        if (hljs.getLanguage(language)) {
          return hljs.highlight(code, { language }).value;
        }
        return hljs.highlightAuto(code).value; // 自动检测语言
      },
      langPrefix: 'hljs language-', // 为代码块添加 CSS 类
    });
 <script>

可以在控制台检查是否匹配并使用了对应的语言

相关推荐
桂月二二1 小时前
深入探索 Vue.js 组件开发中的最新技术:Teleport 和 Suspense 的使用
前端·javascript·vue.js
影子信息1 小时前
element 日期时间组件默认显示当前时间
java·前端·javascript
神仙别闹3 小时前
基于Vue和Vuex实现俄罗斯方块小游戏
前端·javascript·vue.js
m0_512744648 小时前
TypeScript 与后端开发Node.js
javascript·typescript·node.js
影子信息8 小时前
element select 绑定一个对象{}
javascript·vue.js·elementui
浪浪山小白兔8 小时前
HTML 中的 Window 和 Document 介绍
前端·javascript·html
itwlz8 小时前
npm发布工具包+使用
前端·javascript·npm
md_10089 小时前
Flutter ListView进阶:如何实现根据索引值滚动到列表特定位置
前端·javascript·flutter
USER_A0019 小时前
JavaScript笔记基础篇03——函数
javascript·笔记
dgw264863380910 小时前
HTML练习-校园官网首页面
前端·css·html