Server IP : 162.213.251.212 / Your IP : 3.147.64.131 [ Web Server : LiteSpeed System : Linux business55.web-hosting.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64 User : allssztx ( 535) PHP Version : 8.1.31 Disable Function : NONE Domains : 1 Domains MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/allssztx/nodevenv/needapair.com/20/lib/node_modules/nodemailer/lib/stream-transport/ |
Upload File : |
'use strict'; const packageData = require('../../package.json'); const shared = require('../shared'); /** * Generates a Transport object for streaming * * Possible options can be the following: * * * **buffer** if true, then returns the message as a Buffer object instead of a stream * * **newline** either 'windows' or 'unix' * * @constructor * @param {Object} optional config parameter */ class StreamTransport { constructor(options) { options = options || {}; this.options = options || {}; this.name = 'StreamTransport'; this.version = packageData.version; this.logger = shared.getLogger(this.options, { component: this.options.component || 'stream-transport' }); this.winbreak = ['win', 'windows', 'dos', '\r\n'].includes((options.newline || '').toString().toLowerCase()); } /** * Compiles a mailcomposer message and forwards it to handler that sends it * * @param {Object} emailMessage MailComposer object * @param {Function} callback Callback function to run when the sending is completed */ send(mail, done) { // We probably need this in the output mail.message.keepBcc = true; let envelope = mail.data.envelope || mail.message.getEnvelope(); let messageId = mail.message.messageId(); let recipients = [].concat(envelope.to || []); if (recipients.length > 3) { recipients.push('...and ' + recipients.splice(2).length + ' more'); } this.logger.info( { tnx: 'send', messageId }, 'Sending message %s to <%s> using %s line breaks', messageId, recipients.join(', '), this.winbreak ? '<CR><LF>' : '<LF>' ); setImmediate(() => { let stream; try { stream = mail.message.createReadStream(); } catch (E) { this.logger.error( { err: E, tnx: 'send', messageId }, 'Creating send stream failed for %s. %s', messageId, E.message ); return done(E); } if (!this.options.buffer) { stream.once('error', err => { this.logger.error( { err, tnx: 'send', messageId }, 'Failed creating message for %s. %s', messageId, err.message ); }); return done(null, { envelope: mail.data.envelope || mail.message.getEnvelope(), messageId, message: stream }); } let chunks = []; let chunklen = 0; stream.on('readable', () => { let chunk; while ((chunk = stream.read()) !== null) { chunks.push(chunk); chunklen += chunk.length; } }); stream.once('error', err => { this.logger.error( { err, tnx: 'send', messageId }, 'Failed creating message for %s. %s', messageId, err.message ); return done(err); }); stream.on('end', () => done(null, { envelope: mail.data.envelope || mail.message.getEnvelope(), messageId, message: Buffer.concat(chunks, chunklen) }) ); }); } } module.exports = StreamTransport;