mailisk
Version:
Mailisk library for NodeJS
70 lines (69 loc) • 1.99 kB
JavaScript
var __defProp = Object.defineProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
// src/mailisk.ts
import axios from "axios";
import nodemailer from "nodemailer";
var MailiskClient = class {
constructor({ apiKey, baseUrl }) {
this.axiosInstance = axios.create({
headers: {
"X-Api-Key": apiKey
},
baseURL: baseUrl || "https://api.mailisk.com/"
});
}
axiosInstance;
async listNamespaces() {
return (await this.axiosInstance.get("api/namespaces")).data;
}
async sendVirtualEmail(namespace, params) {
const smtpSettings = await this.getSmtpSettings(namespace);
const transport = nodemailer.createTransport({
host: smtpSettings.data.host,
port: smtpSettings.data.port,
secure: false,
auth: {
user: smtpSettings.data.username,
pass: smtpSettings.data.password
}
});
const { from, to, subject, text, html } = params;
await transport.sendMail({
from,
to,
subject,
text,
html
});
transport.close();
}
async searchInbox(namespace, params, config) {
let _params = { ...params };
if (params?.from_timestamp === void 0 || params?.from_timestamp === null) {
_params.from_timestamp = Math.floor(new Date().getTime() / 1e3) - 15 * 60;
}
if (params?.wait !== false) {
_params.wait = true;
}
let _config = { ...config };
if (!config?.maxRedirects) {
_config.maxRedirects = 99999;
}
if (_params.wait && !config?.timeout) {
_config.timeout = 1e3 * 60 * 5;
}
return (await this.axiosInstance.get(`api/emails/${namespace}/inbox`, {
..._config,
params: _params
})).data;
}
async getSmtpSettings(namespace) {
const result = await this.axiosInstance.get(`api/smtp/${namespace}`);
return result.data;
}
};
__name(MailiskClient, "MailiskClient");
export {
MailiskClient
};
//# sourceMappingURL=index.mjs.map