吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 9857|回复: 147
收起左侧

[其他转载] Node每天定时给女朋友发邮件 明天天气和在一起多少天

    [复制链接]
你阿曦 发表于 2021-3-29 15:51
本帖最后由 你阿曦 于 2021-4-8 17:49 编辑

话不多说上代码,一共有三部分操作.

1、创建app.js 输入代码
2、创建mail.html输入代码
2、npm install安装所需要的依赖

3、node app.js运行脚本

统一回复 对象楼主不包分配 请自己new Object()
引用了一个png图片

w1.png

w1.png



最终效果图

最终效果图

最终效果图

第一次发帖还望各位老哥不吝赐教

[md]//引用superagent包,用于服务器发送http请求
const request = require('superagent')
//导入cheerio包 解析http
const cheerio = require('cheerio')
//导入 art-template
const template = require('art-template')
//导入PATH
const path = require('path')
//导入nodemaler发送邮件的包
const nodemailer = require('nodemailer')
//导入定时任务包
var schedule = require('node-schedule')

function getDate() {
  return new Promise((resolve, reject) => {
    //现在的时间
    const today = new Date()
    //认识的时间
    const meet = new Date('YYYY-MM-DD')
    //认识的天数
    const count = Math.floor((today - meet) / 1000 / 60 / 60 / 24)
    //今天的日期
    const format =
      today.getFullYear() +
      ' / ' +
      (today.getMonth() + 1) +
      ' / ' +
      today.getDate()
    const dayDate = {
      count,
      format,
    }
    resolve(dayDate)
  })
}
// getDate()

//请求墨迹天气的数据
function getMojiData() {
  return new Promise((resolve, reject) => {
    request
      .get('http://tianqi.moji.com/tommorrow/china/zhejiang/taizhou')
      .end((err, res) => {
        if (err) return console.log('数据请求失败')
        const $ = cheerio.load(res.text)
        //温度
        const wendu =
          $('.detail_weather em:eq(0)').text() +
          '-' +
          $('.detail_weather em:eq(1)').text()
        //天气
        const weather = $('.detail_weather span').text()
        //提示
        const tips = $('.detail_ware_title span').text()
        //墨迹对象
        const mojiData = {
          weather,
          wendu,
          tips,
        }
        resolve(mojiData)
      })
  })
}
// getMojiData()

//请求One页面抓取数据
function getOneData() {
  return new Promise((resolve, reject) => {
    request.get('http://wufazhuce.com/').end((res, err) => {
      if (err) return console.log('数据请求失败')
      //把返回值中的数据解析成HTML
      const $ = cheerio.load(res.text)
      //抓取One的图片
      const img = $('.carousel-inner>.item>img, .carousel-inner>.item>a>img')
        .eq(0)
        .attr('src')
      //抓取One的文本
      const text = $('.fp-one .fp-one-cita-wrapper .fp-one-cita a').eq(0).text()

      const OneData = {
        img,
        text,
      }
      resolve(OneData)
    })
  })
}

// getOneData()

//渲染邮件
async function renderTemplate() {
  //获取日期数据
  const dayData = await getDate()
  //获取墨迹天气数据
  const mojiData = await getMojiData()
  //获取One数据
  const oneData = await getOneData()
  return new Promise((resolve, reject) => {
    const html = template(path.join(__dirname, './mail.html'), {
      dayData,
      mojiData,
      oneData,
    })
    resolve({ html, mojiData })
  })
}

// renderTemplate();

async function sendMail() {
  const { html, mojiData } = await renderTemplate()

  let transporter = nodemailer.createTransport({
    host: 'smtp.126.com',
    port: 465,
    secure: true, // true for 465, false for other ports
    auth: {
      user: '12345@126.com', // 你的邮箱账号
      pass: '12345', //你的邮箱密码
    },
  })

  // send mail with defined transport object
  let mailOptions = {
    from: '"帅气的开发者" <12345@126.com>', // 你的邮箱发件人及地址
    to: 'xxxxxx@qq.com', // 对象的邮箱地址
    subject: `温度:${mojiData.wendu} 天气:${mojiData.weather}`, // 副标题
    html: html, // html主体文件
  }

  transporter.sendMail(mailOptions, (error, info = {}) => {
    if (error) {
      sendMail()
    }
    console.log('发送成功', info.messageId)
    console.log('等待下一次发送!')
  })
}
// sendMail()
//定时任务,每天晚上九点.
var j = schedule.scheduleJob('0 0 21 * * *', function () {
  sendMail()
  console.log('定时任务执行完毕!')
})

```[/md]






<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title></title>
  </head>
  <body>
    <div
      style="
        border: 0px solid red;
        width: 100%;
        margin: 40px auto;
        color: gray;
        text-align: center;
        font-size: 20px;
      "
      align="center"
    >
      <span>我们已经在一起</span>
      <span style="font-size: 24px; color: red">{{dayData.count}}</span>
      <span>天</span>
    </div>

    <div
      style="
        border: 0px solid red;
        width: 100%;
        margin: 0 auto;
        color: gray;
        text-align: center;
      "
    >
      <img src="./w1.png" style="background: royalblue" alt="天气图标" />
      <b style="display: block; color: black; font-size: 24px; margin: 15px 0">
        明日天气:{{mojiData.weather}}
      </b>
      <span
        style="display: block; color: black; font-size: 22px; margin: 15px 0"
      >
        明日温度:{{mojiData.wendu}}
      </span>
      <span style="display: block; color: lightgray; font-size: 20px">
        温馨提示:{{mojiData.tips}}
      </span>
    </div>

    <div style="text-align: center; margin: 35px 0">
      <!-- <span
        style="display: block; margin-top: 55px; color: gray; font-size: 15px"
      >
        ONE 一个
      </span>
 -->
      <span
        style="
          display: block;
          margin-top: 25px;
          color: lightgray;
          font-size: 22px;
        "
      >
        {{dayData.format}}
      </span>

      <!--    <img
        src="{{oneData.img}}"
        style="margin-top: 10px; width: 100%"
        alt="One配图"
      /> -->

      <div style="margin: 10px auto; width: 85%; color: gray">
        {{oneData.text}}
      </div>
    </div>
  </body>
</html>


补充一个package.json吧 考虑一下小白

{
"dependencies": {
"art-template": "^4.13.2",
"cheerio": "^1.0.0-rc.5",
"node-schedule": "^2.0.0",
"nodemailer": "^6.5.0",
"superagent": "^6.1.0"
}
}

免费评分

参与人数 24吾爱币 +22 热心值 +23 收起 理由
lixiuxiu + 1 + 1 我很赞同!
没羽毛的鸟 + 1 + 1 非常赞的小功能
xiazaiy + 1 + 1 我很赞同!
viko-huang + 1 + 1 我很赞同!
妙蛙肘子 + 1 + 1 我很赞同!
春又来人已去 + 1 + 1 我很赞同!
坚果-君 + 1 我很赞同!
清风伴酒丨 + 1 + 1 谢谢@Thanks!
yaobao78 + 1 + 1 用心讨论,共获提升!
医生 + 1 + 1 部署到云函数或者github,用酷推、server酱 进行推送,会更方便
一尘不染 + 1 + 1 我很赞同!
Macrad + 1 我很赞同!
忆安恙 + 1 + 1 谢谢@Thanks!
银狐狸 + 1 + 1 我很赞同!
碎雨 + 1 + 1 谢谢@Thanks!
fengzitoo97 + 1 + 1 热心回复!
lifestyle + 1 + 1 谢谢@Thanks!
painstaking1 + 1 + 1 谢谢@Thanks!
时光书窝 + 1 + 1 我很赞同!
性本善 + 1 + 1 女朋友多用多线程发送
5598869 + 1 + 1 没女朋友怎么办!!!!!!!
djhz520 + 1 我很赞同!
mork + 1 + 1 热心回复!
propai + 1 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

sam喵喵 发表于 2021-3-29 16:20
结婚多年,缺个女朋友,大佬放出详细教程好吗
opqrsgu 发表于 2021-3-29 16:48
liuqingbin 发表于 2021-3-29 15:58
牛逼,学会了,有找女朋友的代码吗

同求这个代码,这个太实用了!楼主这个只是第2步骤的代码!请把第1步骤找女朋友代码写出来好吗?
liuqingbin 发表于 2021-3-29 15:58
R0B1N 发表于 2021-3-29 15:59
嗯???还有女朋友
Mr.CHENGLANG 发表于 2021-3-29 15:59
怎么用到手机里面?
田田爱崽崽 发表于 2021-3-29 15:59
那个,嗯,代码已经下载好了,请问女朋友哪里领?
Y.LiZ 发表于 2021-3-29 15:59
liuqingbin 发表于 2021-3-29 15:58
牛逼,学会了,有找女朋友的代码吗

占楼同求。
命本无名 发表于 2021-3-29 16:00
??还有女朋友
着迷59 发表于 2021-3-29 16:00
嗯学会了,有没有一键找女友的代码
蓝白三 发表于 2021-3-29 16:02
牛逼轰轰的,怎么找女朋友?
沧浪之水濯我心 发表于 2021-3-29 16:05
liuqingbin 发表于 2021-3-29 15:58
牛逼,学会了,有找女朋友的代码吗

没对象,new一个啊
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 09:59

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表