mailbucket
Version:
An npm library that aggregates multiple APIs for creating and receiving temporary emails.
74 lines (49 loc) • 3.2 kB
Markdown
[](https://badge.fury.io/js/mailbucket)
[](https://opensource.org/licenses/MIT)
An npm library that aggregates multiple APIs for creating and receiving temporary/disposable emails through a unified interface.
Working directly with various temporary email service APIs can be cumbersome. Each has its own authentication method, endpoints, and response structure. This library aims to provide a single, consistent way to interact with multiple providers, simplifying the process of generating temporary emails and fetching messages programmatically.
* Unified API for multiple temp email providers.
* Create new temporary email accounts/addresses.
* Fetch incoming messages for an address.
* List available domains (per provider).
* Delete accounts (where supported by the provider API).
* TypeScript support (optional, but recommended).
## ✅ Supported Providers
This library currently supports the following temporary email service APIs:
* [mail.tm](https://mail.tm)
* [mail.gw](https://mail.gw)
*Note: Provider availability and API stability depend on the external services themselves.*
## 💾 Installation
```bash
npm install mailbucket
# or
pnpm install mailbucket
```
### Code
```typescript
import { MailBucket } from "mailbucket"
async function main() {
const client = new MailBucket();
console.log("Available providers:", client.getAvailableProviders());
let accountResponse = await client.createAccount(); // Or create using a specific provider client.createAccount(<provider>);
if (!accountResponse.success || !accountResponse.data) { console.error("Failed to create account:", accountResponse.message); return; }
console.log(`Created Account: ${accountResponse.data.address} (Provider: ${accountResponse.data.providerName})`);
console.log("Waiting for emails... Check your inbox:", accountResponse.data.address);
await new Promise(resolve => setTimeout(resolve, 30000));
const messagesResponse = await client.getMessages(accountResponse.data);
if (!messagesResponse.success || !messagesResponse.data) { console.error("Failed to get messages:", messagesResponse.message); return; }
if (!messagesResponse.data[0]){ console.log("No messages for:", accountResponse.data.address); return; }
const messageDetailResponse = await client.getMessage(accountResponse.data, messagesResponse.data[0].id);
if (!messageDetailResponse.success || !messageDetailResponse.data) { return }
console.log("Subject:", messageDetailResponse.data.subject);
console.log("From:", messageDetailResponse.data.from);
console.log("Body (HTML snippet):", messageDetailResponse.data.bodyHtml?.substring(0, 200) || 'N/A');
console.log("Body (Text snippet):", messageDetailResponse.data.bodyText?.substring(0, 200) || 'N/A');
console.log(messageDetailResponse.data)
}
main().catch(console.error);
```