osr-mono/packages/osr-mail/lib/imap/index.js
2025-01-29 18:17:03 +01:00

110 lines
7.1 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.draft = void 0;
const imapflow_1 = require("imapflow");
async function getMessagesFromInboxWithFilter(imapConfig, fromAddress, toAddress) {
const client = new imapflow_1.ImapFlow({
host: imapConfig.host,
port: imapConfig.port,
secure: imapConfig.tls,
auth: {
user: imapConfig.user,
pass: imapConfig.password
}
});
try {
// Connect to the IMAP server
await client.connect();
// Select and lock the INBOX
let lock = await client.getMailboxLock('INBOX');
try {
// Search for messages where the 'from' address and 'to' address match the specified filters
const searchCriteria = {
from: fromAddress,
to: toAddress
};
// Search for messages matching the criteria
const messages = client.fetch({ from: fromAddress, to: toAddress }, { envelope: true, source: true });
// Iterate through each filtered message and print details
for await (let message of messages) {
console.log('Message ID:', message.uid);
console.log('From:', message.envelope?.from?.map(f => `${f.name} <${f.address}>`).join(', '));
console.log('To:', message.envelope?.to?.map(f => `${f.name} <${f.address}>`).join(', '));
console.log('Subject:', message.envelope?.subject);
console.log('Date:', message.envelope?.date);
// If you need the message body, you can access it from message.source
console.log('Raw message source:', message.source.toString());
}
}
finally {
// Always release the lock
lock.release();
}
// Log out and close the connection
await client.logout();
}
catch (err) {
console.error('Error fetching messages:', err);
throw err;
}
}
// Configuration for IMAP
const imapConfig = {
host: 'imap.example.com',
port: 993,
auth: {
user: 'your_email@example.com',
pass: 'your_password'
},
secure: true
};
// Create a draft email
const draft = async (subject, html, options) => {
const client = new imapflow_1.ImapFlow(options);
try {
await client.connect();
await client.mailboxOpen('Drafts');
const draftMessage = {
envelope: {
from: 'Your Name <your_email@example.com>',
subject: subject
},
content: html,
...options
};
// Append the draft to the 'Drafts' folder
await client.append('Drafts', draftMessage, { flags: ['\Draft'] });
console.log('Draft created successfully.');
}
catch (err) {
console.error('Error:', err);
}
finally {
// Close the connection
await client.logout();
console.log('Connection ended.');
}
};
exports.draft = draft;
/*
// Example usage
const config: ImapConfig = {
user: 'your-email@example.com',
password: 'your-password',
host: 'imap.your-email-provider.com',
port: 993,
tls: true
};
const fromAddress = 'sender@example.com';
const toAddress = 'recipient@example.com';
getMessagesFromInboxWithFilter(config, fromAddress, toAddress)
.then(() => {
console.log('Finished fetching filtered messages.');
})
.catch(err => {
console.error('Error:', err);
});
*/
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2ltYXAvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsdUNBQW1DO0FBVW5DLEtBQUssVUFBVSw4QkFBOEIsQ0FBQyxVQUFzQixFQUFFLFdBQW1CLEVBQUUsU0FBaUI7SUFDeEcsTUFBTSxNQUFNLEdBQUcsSUFBSSxtQkFBUSxDQUFDO1FBQ3hCLElBQUksRUFBRSxVQUFVLENBQUMsSUFBSTtRQUNyQixJQUFJLEVBQUUsVUFBVSxDQUFDLElBQUk7UUFDckIsTUFBTSxFQUFFLFVBQVUsQ0FBQyxHQUFHO1FBQ3RCLElBQUksRUFBRTtZQUNGLElBQUksRUFBRSxVQUFVLENBQUMsSUFBSTtZQUNyQixJQUFJLEVBQUUsVUFBVSxDQUFDLFFBQVE7U0FDNUI7S0FDSixDQUFDLENBQUM7SUFFSCxJQUFJLENBQUM7UUFDRCw2QkFBNkI7UUFDN0IsTUFBTSxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFdkIsNEJBQTRCO1FBQzVCLElBQUksSUFBSSxHQUFHLE1BQU0sTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVoRCxJQUFJLENBQUM7WUFDRCw0RkFBNEY7WUFDNUYsTUFBTSxjQUFjLEdBQUc7Z0JBQ25CLElBQUksRUFBRSxXQUFXO2dCQUNqQixFQUFFLEVBQUUsU0FBUzthQUNoQixDQUFDO1lBRUYsNENBQTRDO1lBQzVDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFFdEcsMERBQTBEO1lBQzFELElBQUksS0FBSyxFQUFFLElBQUksT0FBTyxJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUNqQyxPQUFPLENBQUMsR0FBRyxDQUFD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