Skip to content

Latest commit

 

History

History
186 lines (123 loc) · 4.32 KB

README.md

File metadata and controls

186 lines (123 loc) · 4.32 KB

mail.tm-api

XielQ - mail.tm-api stars - mail.tm-api forks - mail.tm-api

GitHub release License issues - mail.tm-api

⚡ A powerful library to use the Mail.TM and Mail.GW api to receive email

Installation

$ npm install mail.tm-api
# Or
$ yarn add mail.tm-api
# Or
$ pnpm add mail.tm-api
# Or
$ bun add mail.tm-api

Getting Started

  • Note: All functions are async/await

Account

Create Account

There is a bunch of way to create an account

const MailTM = require('mail.tm-api');

const account = await MailTM.createAccount();
// Or you can specify the mail address & password
const account = await MailTM.createAccount('ADDRESS', 'PASSWORD');
// Example: MailTM.createAccount('George', 'mySuperDuperPass')

You can create account with only domain

const domain = await MailTM.fetchDomains({ getRandomDomain: true });

const account = await MailTM.createAccount(domain, 'PASSWORD');
// Without password
const account = await MailTM.createAccount(domain);

Login Account

const MailTM = require('mail.tm-api');

const account = await MailTM.loginAccount('ADDRESS@DOMAIN', 'PASSWORD');

// Login using JWT

const account = await MailTM.loginAccount('TOKEN');

Note: If you have a token, you can use it instead of the address & password

Fetch Account Info

console.log(await account.fetch());
// { id: 'ID', address: 'ADDRESS@DOMAIN', ... }

Delete Account

console.log(await account.delete());
// true

Domains

Fetch domains

const MailTM = require('mail.tm-api');

console.log(await MailTM.fetchDomains());
// [{ id: 'DOMAIN_ID', domain: 'DOMAIN' }]

// Fetch a specific page

console.log(await MailTM.fetchDomains({ page: 2 }));
// [{ id: 'DOMAIN_ID', domain: 'DOMAIN' }]

// Get random domain
console.log(await MailTM.fetchDomains({ getRandomDomain: true }));

Configure Class

const MailTM = require('mail.tm-api');

MailTM.setConfig({
 // Props Here
});

Available props

  • mailService [Optional & 'mail.tm' | 'mail.gw'] = 'mail.tm': Change mail service
  • axiosOptions [Optional & Object] = {}: Axios request options

Emails

Get a cached email

console.log(account.mails.cache.get('MAIL_ID'));
// { id: 'MAIL_ID', accountId: 'ACCOUNT_ID', ... }

Note: account.mails.cache is a Map object, you can use all Map methods

Fetch a email

console.log(await account.mails.fetch('MAIL_ID'));
// { id: 'MAIL_ID', accountId: 'ACCOUNT_ID', ... }

// Or

console.log(await account.mails.cache.get('MAIL_ID').fetch());
// { id: 'MAIL_ID', accountId: 'ACCOUNT_ID', ... }

Fetch all emails

console.log(await account.mails.fetchAll());
// [{ id: 'MAIL_ID', accountId: 'ACCOUNT_ID', ... }, ...]

// Fetch a specific page

console.log(await account.mails.fetchAll(2));
// [{ id: 'MAIL_ID', accountId: 'ACCOUNT_ID', ... }, ...]

Listen for new emails

account.on('newMail', email => {
 console.log(email);
 // { id: 'MAIL_ID', accountId: 'ACCOUNT_ID', ... }
});

Delete a email

console.log(await account.mails.cache.get('MAIL_ID').delete());
// { id: 'MAIL_ID', accountId: 'ACCOUNT_ID', ..., isDeleted: true }

// Or

console.log(await (await account.mails.fetch('MAIL_ID')).delete());
// { id: 'MAIL_ID', accountId: 'ACCOUNT_ID', ..., isDeleted: true }

Download a email

console.log(await account.mails.cache.get('MAIL_ID').download('PATH.eml'));
// PATH.eml

// Or

console.log(await (await account.mails.fetch('MAIL_ID')).download('PATH.eml'));
// PATH.eml

License

Released under MIT by @XielQs.