Website : rimsha.abasa.com
backdoor
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
exp-backend
/
src
/
services
/
Filename :
emailReceiverCLI.ts
back
Copy
import { simpleParser } from 'mailparser'; import prisma from '../prisma/prismaClient'; import logger from '../utils/logger'; import { handleCLIError } from '../utils/CLIErrorHandler'; const processEmail = async () => { let rawEmail = ''; process.stdin.setEncoding('utf8'); for await (const chunk of process.stdin) { rawEmail += chunk; } try { const parsed = await simpleParser(rawEmail); const senderEmail = parsed.from?.value?.[0]?.address || ''; const receiverEmail = parsed.to?.value?.[0]?.address || 'm.wahaj@abasa.com'; const subject = parsed.subject || 'No Subject'; const body = parsed.text || parsed.html || 'No Content'; const messageId = parsed.messageId || null; logger.info('Parsed email details', { senderEmail, receiverEmail, subject, messageId, }); const senderUser = await prisma.user.findUnique({ where: { email: senderEmail }, select: { id: true }, }); const relatedLead = await prisma.lead.findFirst({ where: { email: senderEmail }, select: { id: true }, }); if (!relatedLead) { logger.warn(`No lead found for email: ${senderEmail}`); } await prisma.email.create({ data: { senderId: senderUser?.id || 0, receiverEmail, subject, body, messageId, isRead: false, status: 'RECEIVED', sentAt: new Date(), leadId: relatedLead?.id || null, }, }); logger.info(`Email stored successfully from ${senderEmail}`, { leadId: relatedLead?.id || null, }); console.log(` Email stored from ${senderEmail} (leadId: ${relatedLead?.id || 'null'})`); } catch (err) { handleCLIError(err, 'Failed to process incoming email'); } finally { await prisma.$disconnect(); } }; processEmail();