UNPKG

mail-genie

Version:

A Node.js library for generating random emails, fetching domains, and parsing email content.

78 lines (67 loc) 2.36 kB
const cheerio = require('cheerio'); const he = require('he'); const { htmlToText } = require('html-to-text'); const parseEmails = (html, url) => { const $ = cheerio.load(html); const emailArray = []; $('#email-table').each((index, element) => { const from = $(element).find('.from_div_45g45gg').text().trim(); const subject = $(element).find('.subj_div_45g45gg').text().trim(); const time = $(element).find('.time_div_45g45gg').text().trim(); const link = `${url}${$(element).attr('href')}`; const splitLink = link.split('/'); const body = $(element).find('.e7m.mess_bodiyy').text().trim(); const bodys = parseMessage(body,true); emailArray.push({ from, subject, time, link, domain: splitLink[3], username: splitLink[4], email: `${splitLink[4]}@${splitLink[3]}`, inboxid: splitLink[5], body: bodys }); }); return emailArray; }; // Fungsi untuk mem-parsing isi pesan email const parseMessage = (html, bodyes = false) => { if (bodyes) { return { html: he.decode(html), plaintext: htmlToText(html.trim(), { wordwrap: false }) } } const $ = cheerio.load(html); const messageElement = $('#message'); const [received, created] = messageElement .find('span').eq(7) .text() .trim() .split('\n') .map(item => item.replace('Created:', '').trim()); const to = messageElement.find('span').eq(1).text().trim(); const from = messageElement.find('span').eq(3).text().trim(); const subject = messageElement.find('h1').text().trim(); const bodyElement = $('.e7m.col-md-12.ma1'); const bodyHtml = bodyElement.find('.e7m.mess_bodiyy > div[dir="ltr"]').html().trim(); const bodyText = htmlToText(bodyElement.find('.e7m.mess_bodiyy > div[dir="ltr"]').text().trim(), { wordwrap: false }); return { to, from, subject, received, created, body: { html: he.decode(bodyHtml), plaintext: bodyText } }; }; module.exports = { parseEmails, parseMessage };