前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【玩转Lighthouse】 nodejs抓取邮箱收件信息

【玩转Lighthouse】 nodejs抓取邮箱收件信息

原创
作者头像
咕咕过
修改2022-04-14 16:11:30
2.6K1
修改2022-04-14 16:11:30
举报
文章被收录于专栏:LighthouseLighthouse

简介

很多时候比如我们需要收取一些应用注册的验证码或者其他信息,我们都需要登录邮箱账号查看,但如果多账号多次重复收取信息则显得比较麻烦,所以我们利用mailPaser库结合nodejs在腾讯云Lighthouse上做一个邮件收取功能。并简要阐述购买Lighthouse和搭建的一步步过程。

步骤

1.购买腾讯云Lighthouse

打开腾讯云网址,左上角活动里面新用户可以参与限时秒杀购买;也可以直接左上角产品中找到轻量应用服务器购买即可。(建议系统选择CentOS7.6或8.0即可)

image.png
image.png

2.登录并安装相关程序

打开轻量应用服务器管理页面,例如下图中,可以利用腾讯云自带的登录功能亦可以自行利用其它ssh登录工具进行登录操作。

image.png
image.png

登录后,首先可以进行yum源的更新,yum update,然后安装nodejs,yum install nodejs -y,至出现complete即可

image.png
image.png

3.创建目录开始写代码

目录自行选择,比如我们可以在/usr/local/下创建一个nodejs目录mkdir -p /usr/local/nodejs,并移动到此目录下cd /usr/local/nodejs/,编辑名为fuckMail.js文件,vim fuckMail.js名称也可以自行选择哈~(推荐使用VScode的Remote-ssh插件,远程连接写代码更高效儿~)

写入如下代码,相关注意事项已在注释中说明,注意更改。(已注释掉认为不必要的代码,亦可自行增加)

代码语言:txt
复制
var Imap = require('imap')
var http = require('http')
var querystring = require('querystring')//可以结合http模块改造成一个API使用更高效
var MailParser = require("mailparser").MailParser
var fs = require("fs")

var imap = new Imap({
    user: 'abcdefg@outlook.com', //你的邮箱账号
    password: 'tencentpointcom', //你的邮箱密码
    host: 'outlook.office365.com', //邮箱服务器的主机地址
    port: 993, //邮箱服务器的端口地址
    tls: true, //使用安全传输协议
    tlsOptions: { rejectUnauthorized: false } //禁用对证书有效性的检查
});

function openInbox(cb) {
    imap.openBox('INBOX', true, cb);
}

imap.once('ready', function () {
    openInbox(function (err, box) {
        // console.log("打开邮箱")
        if (err) throw err;
        imap.search(['UNSEEN', ['SINCE', 'Jun 1, 2021']], function (err, results) {//搜寻2021 6 1后未读
            if (err) throw err;
            var f = imap.fetch(results, { bodies: '' });//抓取邮件(默认情况下邮件服务器的邮件是未读状态)
            f.on('message', function (msg, seqno) {
                var mailparser = new MailParser();
                msg.on('body', function (stream, info) {
                    stream.pipe(mailparser);//将为解析的数据流pipe到mailparser
                    //邮件头内容
                    // mailparser.on("headers", function (headers) {
                    //     console.log("邮件头信息>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
                    //     console.log("邮件主题: " + headers.get('subject'));
                    //     console.log("发件人: " + headers.get('from').text);
                    //     console.log("收件人: " + headers.get('to').text);
                    // });
                    mailparser.on("data", function (data) {
                        //xxxxxxx注册邮箱验证码获取,注意subject和下面正则表达式自行替换
                        if (data.type === 'text' && this.headers.get('subject') === '注册邮箱验证') {
                            var regex = /<span style=.+>(\d{6})<\/span>/g;
                            var contents = JSON.stringify(data.html);
                            var matches = regex.exec(contents);
                            if (matches) {
                                console.log("code:" + matches[1]);
                            }
                        }

                        //xxxxxxxx注册邮箱验证码英文,也是注意自行替换
                        if (data.type === 'text' && this.headers.get('subject') === (' Email Verification')) {
                            var regex = /<span style=.+>(\d{6})<\/span>/g;
                            var contents = JSON.stringify(data.html);
                            var matches = regex.exec(contents);
                            if (matches) {
                                console.log("code:" + matches[1]);
                            }
                        }

                        // if (data.type === 'attachment') {//附件
                        //     console.log("邮件附件信息>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
                        //     console.log("附件名称:" + data.filename);//打印附件的名称
                        //     data.content.pipe(fs.createWriteStream(data.filename));//保存附件到当前目录下
                        //     data.release();
                        // }
                    });
                });

                // // 邮件索引
                // msg.once('end', function () {
                //     console.log(seqno + '完成');
                // });
            });

            f.once('error', function (err) {
                console.log('抓取出现错误: ' + err);
            });

            f.once('end', function () {
                // console.log('所有邮件抓取完成!');
                imap.end();
            });
        });
    });
});

imap.once('error', function (err) {
    console.log(err);
});

imap.once('end', function () {
    // console.log('关闭邮箱');
});
imap.connect();

4.运行

执行node fuckMail.js即可在控制台输出你想得到的~

切记代码根据自己需要自行修改补充,不是CV大法。

谢谢!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • 步骤
相关产品与服务
轻量应用服务器
轻量应用服务器(TencentCloud Lighthouse)是新一代开箱即用、面向轻量应用场景的云服务器产品,助力中小企业和开发者便捷高效的在云端构建网站、Web应用、小程序/小游戏、游戏服、电商应用、云盘/图床和开发测试环境,相比普通云服务器更加简单易用且更贴近应用,以套餐形式整体售卖云资源并提供高带宽流量包,将热门开源软件打包实现一键构建应用,提供极简上云体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档