mikromail
v1.0.0
Published
Lightweight replacement for Nodemailer, supporting HTML, international symbols, and more.
Downloads
31
Readme
MikroMail
Lightweight replacement for Nodemailer, supporting HTML, international symbols, and more.
- Supports international symbols
- Supports HTML emails
- Defaults to secure transmission
- Tiny (~4.4 KB gzipped), which is ~13x smaller than Nodemailer
- Zero dependencies
Usage
Quick Start
import { MikroMail } from 'MikroMail';
const config = {
user: '[email protected]',
password: 'YOUR_PASSWORD_HERE',
host: 'smtp.email-provider.com'
};
const emailOptions = {
from: '[email protected]',
subject: 'Test Email',
text: 'Hello!',
to: '[email protected]' // You can also send to multiple recipients: ['[email protected]', '[email protected]']
};
await new MikroMail({ config }).send(emailOptions);Bigger example
import { MikroMail } from 'MikroMail';
const sender = '[email protected]';
const config = {
// Required
user: sender,
password: 'YOUR_PASSWORD_HERE',
host: 'smtp.your-provider.net',
// Optional - defaults shown
port: 465,
secure: true,
debug: false,
maxRetries: 2
};
const emailOptions = {
// Required
from: sender,
subject: 'Test Email',
text: 'Hello, this is a test email! Hallå, MikroMail has international support for, among others, español, français, português, 中文, 日本語, and Русский!',
to: '[email protected]',
// Optional
cc: ['[email protected]'],
bcc: ['[email protected]'],
html: `
<html>
<head>
<meta charset="utf-8">
<style>
body { font-family: Arial, sans-serif; color: #333; }
.highlight { color: #0066cc; font-weight: bold; }
</style>
</head>
<body>
<h1>Hello, this is a test email!</h1>
<p>Hallå, MikroMail has <span class="highlight">international support</span> for, among others, español, français, português, 中文, 日本語, and Русский!</p>
<p>It also supports <b>HTML formatting</b> and <i>styling</i>.</p>
</body>
</html>
`,
headers: {
'X-Priority': '1',
'X-Custom-Header': 'Custom Value'
}
};
await new MikroMail({ config }).send(emailOptions);Provider-specific configurations
Proton Mail
Proton Mail works reliably with port 465 and implicit TLS:
const config = {
user: '[email protected]',
password: 'YOUR_APP_PASSWORD',
host: 'smtp.protonmail.ch',
port: 465,
secure: true
};Note: Port 587 with STARTTLS (secure: false) may have connectivity issues with some Proton Mail configurations. Use port 465 for the most reliable connection.
Test providers (Mailtrap, etc.)
Some test SMTP providers use long random IDs instead of email addresses. To support these providers, use the skipEmailValidation and skipMXRecordCheck options:
const config = {
user: 'your-mailtrap-username',
password: 'your-mailtrap-password',
host: 'smtp.mailtrap.io',
port: 587,
secure: false,
skipEmailValidation: true,
skipMXRecordCheck: true
};
const emailOptions = {
from: '[email protected]',
subject: 'Test Email',
text: 'Hello!',
to: 'a1b2c3d4e5f6g7' // Long random ID used by test providers
};
await new MikroMail({ config }).send(emailOptions);Testing
Some of the tests require faking an SMTP server. Here we use Mailpit, which will run a server on http://localhost:8025.
- On a Mac, install Mailpit with
brew install mailpit(assuming you have Homebrew) - Run Mailpit with
brew services start mailpit - Stop Mailpit with
brew services stop mailpit
License
MIT. See the LICENSE file.
