【微信小程序】站住,别跑啦!2022年的一份大年祝福语追不上你了!丨2022🧭

1,994 阅读5分钟

PK创意闹新春,我正在参加「春节创意投稿大赛」,详情请看:春节创意投稿大赛

  “天天都需要你爱,我的心思由你猜~”歌曲《不得不爱》的一句歌词勾引起你的记忆。(突然就很想唱给大家~) 我也将在2022年一句春节寄语赠与你!
  大家好,我是南方者,本篇文章介绍写个订阅新年一份祝福语的微信小程序~ 话不多说,咱们开始进入正题~ (已上线,可直接订阅领取哦,准时开年当天0点会准点发送~)

一、效果展示

订阅体验 1.gif 祝福语接收情况 image.png 邮箱祝福语情况 image.png

二、体验情况

体验地址

微信扫一扫小程序二维码 image.png

体验流程

(注:授权后,微信那边不接收通知好像也取消不了。谨慎操作~ 如若需要取消,在大年初一前把邮箱填写好,主要方便笔者我找到你,然后我进行操作~ )
订阅祝语流程:扫入小程序——》点击“订阅一份新年祝福语”——》条件勾选邮箱——》确定订阅祝福语授权——》等待大年初一0点整签收祝语~
退订祝语流程:由于授权问题,邮箱可以不选后进行更新订阅,就不会发送邮箱。微信订阅消息需要退订,可联系笔者进行操作哦~(感谢支持!)

三、技术要点、开发逻辑、核心代码

1. 技术要点

订阅祝语(消息订阅)、准时发送(定时触发器,即定时任务)、邮箱发送

2. 开发逻辑

这里省略页面开发的过程(主要用linui组件进行开发的页面)
整体实现,其实比较简单,主要分为两部分,让用户订阅消息(包括是否选择邮箱发送)、到大年初一当天发送准备好的信息。

3. 准备工作与核心代码

1️⃣订阅消息准备工作

登录微信公众平台(小程序)——》订阅信息(功能里)——》选中模板——》查询“祝福寄语提醒”的模板——》添加,记录该模板ID(后面发送时候用到) image.png

2️⃣订阅消息核心代码

js的授权订阅信息代码

    wx.requestSubscribeMessage({
      tmplIds: ['小程序里选中的模板id'], // 生成的订阅信息模板id
      success(res) {
         // 点击授权时候判断是否取消 
        for (var r in res) {
          if (res[r] == "reject") {
            wx.showToast({
              title: '取消',
              icon: "none",
            })
            return;
          }
        }
        wx.showToast({
          title: '订阅成功!',
          icon: "none",
        })
      },
      fail(err) {
        wx.showToast({
          title: '订阅失败!',
          icon: "none",
        })
        console.log(err)
      }
    })

js的发送订阅信息代码 (注:这里的data里的数据要一一对应申请模板的申请的thingX、timeX)

      try {
        return await cloud.openapi.subscribeMessage.send({
          touser: wxContext.OPENID,// 要推送给的用户openid
          page: 'pages/home/home',// 需要跳转到的小程序页面 
          data: { // 对应的推送内容(注:这里的data里的数据要一一对应申请模板的申请的thingX、timeX)
            thing2: {  // 服务名称
              value: msgMap1[num1]
            },
            time1: {// 完成时间
              value: finishTime
            },
            thing3: {// 备注
              value: msgMap2[num2]
            }
          },
          templateId: '小程序里选中的模板id',// 订阅信息模板id
        })
      } catch (err) {
        return err
      }

3️⃣邮箱发送的准备工作

登录QQ邮箱——》设置——》下拉,找到IMAP/SMTP服务开启——》记录该邮箱授权码。也可看更加详情地址:邮箱的IMAP/SMTP服务开启与关闭(实现邮箱发送验证码的前提) image.png

4️⃣邮箱发送的核心代码

验证邮箱是否正确

    // 邮箱匹配正则
    var emailReg = new RegExp('^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.[a-zA-Z0-9]{2,6}$');
    var emailVar = emailReg.test(email);
    if (email.length == 0) {
      wx.showToast({
        title: '未输入邮箱',
        icon: "none",
      })
    } else if (!emailVar) {
      wx.showToast({
        title: '邮箱输入错误',
        icon: "none",
      })
    } else {
    // 匹配正确添加操作
    }

邮箱发送(云函数代码) 添加邮件发送的nodemailer,在package.json里的dependencies内添加"nodemailer": "^6.7.2", image.png 云函数index.js的发送核心代码

// 引入发送邮件的类库
var nodemailer = require('nodemailer')

// 创建一个SMTP客户端配置
var config = {
  host: 'smtp.qq.com',
  port: 465,
  auth: {
    user: 'nanfangzhe@qq.com',// 邮箱账号
    pass: '准备工作里——准备的邮箱授权码',// 邮箱授权码
  }
};
exports.main = async (event, context) => {
      // 创建一个SMTP客户端对象
      var transporter = nodemailer.createTransport(config);
      var mail = {
        from: '宝藏程序 <nanfangzhe@qq.com>',// 发件人
        subject: '2022大年祝福语',// 主题
        to: '785410457@qq.com',// 收件人
        text: '祝你虎年大吉!',// 发件内容
      }
      return await transporter.sendMail(mail);
}

5️⃣定时任务的代码与讲解

在需要定时任务的云函数目录下,config.json文件里添加

  "triggers": [{
    "name": "newyear",
    "type": "timer",
    "config": "0 0 0 1 2 * 2022"
  }]

其中,"config": "0 0 0 1 2 * 2022 意思是2022年2月1日0点0分0秒触发该对应下的云函数。 image.png

四、没有主要代码的原因(后续会更新)

  由于小程序代码里涉及的笔者自己做的一些东西,暂时不好开源。等整理好简单化一些,再分享给大家。(望见谅~)
  如若有想要完成小程序上某些功能、想法,可留下评论,笔者会在能力范围内
  最后,再次祝大家新年愉快~ (欢迎大家订阅大年初一的祝语、寄语哦~ tip: 语句全是笔者自己想好去写的

此外,2022寻找“暴富”人的个人小活动进行中...(红包奖励)

传送地址:2022寻找暴富人 - 小活动(首次个人小活动,红包奖)

文章小尾巴

文章写作、模板、文章小尾巴可参考:《写作“小心思”》
  感谢你看到最后,最后再说两点~
  ①如果你持有不同的看法,欢迎你在文章下方进行留言、评论。
  ②如果对你有帮助,或者你认可的话,欢迎给个小点赞,支持一下~
  我是南方者,一个热爱计算机更热爱祖国的南方人。

  (文章内容仅供学习参考,如有侵权,非常抱歉,请立即联系作者删除。)