-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.ts
More file actions
53 lines (48 loc) · 1.24 KB
/
index.ts
File metadata and controls
53 lines (48 loc) · 1.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import type { EmailAdapter } from "adminforth";
import type { AdapterOptions } from "./types.js";
import formData from "form-data";
import Mailgun from "mailgun.js";
export default class EmailAdapterMailgun implements EmailAdapter {
options: AdapterOptions;
constructor(options: AdapterOptions) {
this.options = options;
}
async validate() {
if (!this.options.apiKey) {
throw new Error("Mailgun apiKey is required");
}
if (!this.options.domain) {
throw new Error("Mailgun domain is required");
}
}
async sendEmail(
from: string,
to: string,
text: string,
html: string,
subject: string
): Promise<{ error?: string; ok?: boolean }> {
const mailgun = new Mailgun(formData);
const client = mailgun.client({
username: "api",
key: this.options.apiKey,
url: `https://${this.options.baseUrl}` || "https://api.mailgun.net",
});
try {
await client.messages.create(this.options.domain, {
from,
to,
subject,
text,
html,
});
return { ok: true };
} catch (error: any) {
console.error("Mailgun send error:", error);
return {
error: "Failed to send email",
ok: false,
};
}
}
}