ts-mailkit 2.0.1 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/README.md +114 -63
  2. package/dist/core/bulk-types.d.ts +196 -0
  3. package/dist/core/bulk-types.d.ts.map +1 -0
  4. package/dist/core/client.d.ts +38 -6
  5. package/dist/core/client.d.ts.map +1 -1
  6. package/dist/core/errors.d.ts +3 -0
  7. package/dist/core/errors.d.ts.map +1 -1
  8. package/dist/core/types.d.ts +5 -0
  9. package/dist/core/types.d.ts.map +1 -1
  10. package/dist/index.cjs +338 -67
  11. package/dist/index.cjs.map +1 -1
  12. package/dist/index.d.ts +19 -13
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +335 -67
  15. package/dist/index.js.map +1 -1
  16. package/dist/renderers/default/default-renderer.d.ts +2 -2
  17. package/dist/renderers/renderer.interface.d.ts +1 -1
  18. package/dist/templates/factory.d.ts +1 -1
  19. package/dist/templates/factory.d.ts.map +1 -1
  20. package/dist/templates/template-builder.d.ts +36 -0
  21. package/dist/templates/template-builder.d.ts.map +1 -0
  22. package/dist/transports/console/console-sender.d.ts +7 -2
  23. package/dist/transports/console/console-sender.d.ts.map +1 -1
  24. package/dist/transports/cpaas/cpaas-sender.d.ts +51 -0
  25. package/dist/transports/cpaas/cpaas-sender.d.ts.map +1 -0
  26. package/dist/transports/cpaas/types.d.ts +133 -0
  27. package/dist/transports/cpaas/types.d.ts.map +1 -0
  28. package/dist/transports/memory/memory-sender.d.ts +26 -6
  29. package/dist/transports/memory/memory-sender.d.ts.map +1 -1
  30. package/dist/transports/sender.interface.d.ts +34 -3
  31. package/dist/transports/sender.interface.d.ts.map +1 -1
  32. package/dist/transports/zeptomail/types.d.ts +5 -46
  33. package/dist/transports/zeptomail/types.d.ts.map +1 -1
  34. package/dist/transports/zeptomail/zeptomail-sender.d.ts +4 -19
  35. package/dist/transports/zeptomail/zeptomail-sender.d.ts.map +1 -1
  36. package/package.json +39 -37
package/README.md CHANGED
@@ -10,7 +10,7 @@ Works seamlessly in **Node.js**, **Cloudflare Workers** (`workerd`), **Bun**, **
10
10
 
11
11
  - **Type-Safe DTOs**: Strongly-typed Data Transfer Objects for transactional emails (verification, password reset, 2FA, magic links, newsletters).
12
12
  - **Pluggable Transports (`IEmailSender`)**: Decoupled transport adapter interface with built-in senders:
13
- - `ZeptoMailHttpSender` (Zoho Mail transactional API via native `fetch`).
13
+ - `CpaasHttpSender` (Zoho CPaaS transactional API via native `fetch`; `ZeptoMailHttpSender` is a deprecated alias).
14
14
  - `MemoryEmailSender` (In-memory mock transport for unit and integration testing).
15
15
  - `ConsoleEmailSender` (Formatted terminal logger for local development).
16
16
  - **Zero Runtime Dependencies**: Core uses standard web APIs (global `fetch`), ensuring zero heavy dependencies and complete edge compatibility.
@@ -52,19 +52,19 @@ bun add ts-mailkit
52
52
  ### 1. Initialize Transport & Client
53
53
 
54
54
  ```ts
55
- import { createMailKit, ZeptoMailHttpSender, EmailTemplateFactory } from 'ts-mailkit';
55
+ import { createMailKit, CpaasHttpSender, EmailTemplateFactory } from "ts-mailkit";
56
56
 
57
- // Configure the Zoho ZeptoMail HTTP transport
58
- const transport = new ZeptoMailHttpSender({
59
- apiToken: process.env.ZEPTO_MAIL_TOKEN!,
60
- apiHost: 'api.zeptomail.com', // or 'api.zeptomail.eu', 'api.zeptomail.in'
61
- from: { address: 'noreply@yourdomain.com', name: 'Acme App' },
57
+ // Configure the Zoho CPaaS HTTP transport
58
+ const transport = new CpaasHttpSender({
59
+ apiToken: process.env.CPAAS_API_KEY!,
60
+ apiHost: "cpaas.zoho.com", // or 'cpaas.zoho.eu', 'cpaas.zoho.in'
61
+ from: { address: "noreply@yourdomain.com", name: "Acme App" },
62
62
  });
63
63
 
64
64
  // Initialize the MailKit client
65
65
  const mailer = createMailKit({
66
66
  transport,
67
- defaultBrandName: 'Acme App',
67
+ defaultBrandName: "Acme App",
68
68
  });
69
69
  ```
70
70
 
@@ -73,14 +73,14 @@ const mailer = createMailKit({
73
73
  ```ts
74
74
  // 1. Create a strongly typed email verification DTO
75
75
  const verificationEmail = EmailTemplateFactory.createEmailVerification({
76
- username: 'Alex',
77
- verificationUrl: 'https://app.example.com/verify?token=xyz123',
78
- otp: '482910',
76
+ username: "Alex",
77
+ verificationUrl: "https://app.example.com/verify?token=xyz123",
78
+ otp: "482910",
79
79
  });
80
80
 
81
81
  // 2. Dispatch via MailKit
82
- await mailer.send({
83
- to: 'alex@example.com',
82
+ await mailer.sendMail({
83
+ to: "alex@example.com",
84
84
  template: verificationEmail,
85
85
  });
86
86
  ```
@@ -94,43 +94,43 @@ await mailer.send({
94
94
  `EmailTemplateFactory` provides type-safe constructors for standard transactional patterns:
95
95
 
96
96
  ```ts
97
- import { EmailTemplateFactory } from 'ts-mailkit';
97
+ import { EmailTemplateFactory } from "ts-mailkit";
98
98
 
99
99
  // Email Verification with OTP
100
100
  const verifyDto = EmailTemplateFactory.createEmailVerification({
101
- username: 'Jordan',
102
- verificationUrl: 'https://app.com/verify?token=abc',
103
- otp: '123456',
101
+ username: "Jordan",
102
+ verificationUrl: "https://app.com/verify?token=abc",
103
+ otp: "123456",
104
104
  });
105
105
 
106
106
  // Password Reset
107
107
  const resetDto = EmailTemplateFactory.createPasswordReset({
108
- username: 'Jordan',
109
- resetUrl: 'https://app.com/reset?token=abc',
110
- otp: '654321',
108
+ username: "Jordan",
109
+ resetUrl: "https://app.com/reset?token=abc",
110
+ otp: "654321",
111
111
  });
112
112
 
113
113
  // Two-Factor Authentication (2FA)
114
114
  const twoFactorDto = EmailTemplateFactory.create2FAEmail({
115
- username: 'Jordan',
116
- otp: '987654',
117
- magicLink: 'https://app.com/2fa/magic?token=abc',
115
+ username: "Jordan",
116
+ otp: "987654",
117
+ magicLink: "https://app.com/2fa/magic?token=abc",
118
118
  });
119
119
 
120
120
  // Magic Link Sign-in
121
121
  const magicLinkDto = EmailTemplateFactory.createMagicLinkEmail({
122
- username: 'Jordan',
123
- magicLink: 'https://app.com/auth/magic?token=abc',
122
+ username: "Jordan",
123
+ magicLink: "https://app.com/auth/magic?token=abc",
124
124
  });
125
125
 
126
126
  // Newsletter / Announcement
127
127
  const newsDto = EmailTemplateFactory.createNewsLetter({
128
- subject: 'Product Update - Fall 2026',
129
- header: 'Introducing New Features',
130
- body: 'Here is what our team shipped this month.',
131
- imageUrl: 'https://cdn.example.com/hero.png',
132
- actionUrl: 'https://app.com/blog/update',
133
- actionText: 'Read Release Notes',
128
+ subject: "Product Update - Fall 2026",
129
+ header: "Introducing New Features",
130
+ body: "Here is what our team shipped this month.",
131
+ imageUrl: "https://cdn.example.com/hero.png",
132
+ actionUrl: "https://app.com/blog/update",
133
+ actionText: "Read Release Notes",
134
134
  });
135
135
  ```
136
136
 
@@ -140,16 +140,17 @@ You can instantiate `EmailTemplateFactory` with brand-level defaults:
140
140
 
141
141
  ```ts
142
142
  const tenantFactory = new EmailTemplateFactory({
143
- brandName: 'St. Patrick High School',
144
- logoUrl: 'https://school.edu/assets/logo.png',
145
- securityMessage: 'If you did not make this request, contact our school IT administration immediately.',
143
+ brandName: "St. Patrick High School",
144
+ logoUrl: "https://school.edu/assets/logo.png",
145
+ securityMessage:
146
+ "If you did not make this request, contact our school IT administration immediately.",
146
147
  footer: (brand) => `© ${new Date().getFullYear()} ${brand}. Authorized educational portal.`,
147
148
  });
148
149
 
149
150
  const studentEmail = tenantFactory.createEmailVerification({
150
- username: 'Student',
151
- verificationUrl: 'https://school.edu/verify',
152
- otp: '554433',
151
+ username: "Student",
152
+ verificationUrl: "https://school.edu/verify",
153
+ otp: "554433",
153
154
  });
154
155
  ```
155
156
 
@@ -158,10 +159,10 @@ Or pass a dynamic tenant resolver to `MailKit`:
158
159
  ```ts
159
160
  const mailer = createMailKit({
160
161
  transport,
161
- defaultFrom: 'notifications@portal.edu',
162
+ defaultFrom: "notifications@portal.edu",
162
163
  brandNameResolver: async () => {
163
164
  // Dynamically retrieve active tenant brand from request context or DB
164
- return 'Springfield Academy';
165
+ return "Springfield Academy";
165
166
  },
166
167
  });
167
168
  ```
@@ -171,10 +172,10 @@ const mailer = createMailKit({
171
172
  Easily write unit and integration tests without hitting third-party APIs or mocking network sockets:
172
173
 
173
174
  ```ts
174
- import { describe, it, expect, beforeEach } from 'vitest';
175
- import { createMailKit, MemoryEmailSender, EmailTemplateFactory } from 'ts-mailkit';
175
+ import { describe, it, expect, beforeEach } from "vitest";
176
+ import { createMailKit, MemoryEmailSender, EmailTemplateFactory } from "ts-mailkit";
176
177
 
177
- describe('User Registration Email', () => {
178
+ describe("User Registration Email", () => {
178
179
  let memoryTransport: MemoryEmailSender;
179
180
  let mailer: ReturnType<typeof createMailKit>;
180
181
 
@@ -183,20 +184,20 @@ describe('User Registration Email', () => {
183
184
  mailer = createMailKit({ transport: memoryTransport });
184
185
  });
185
186
 
186
- it('sends verification code to the registered user', async () => {
187
+ it("sends verification code to the registered user", async () => {
187
188
  const dto = EmailTemplateFactory.createEmailVerification({
188
- username: 'Sam',
189
- verificationUrl: 'https://app.com/verify?token=123',
190
- otp: '889900',
189
+ username: "Sam",
190
+ verificationUrl: "https://app.com/verify?token=123",
191
+ otp: "889900",
191
192
  });
192
193
 
193
- await mailer.send({ to: 'sam@example.com', template: dto });
194
+ await mailer.sendMail({ to: "sam@example.com", template: dto });
194
195
 
195
196
  expect(memoryTransport.count()).toBe(1);
196
197
  const sent = memoryTransport.getLastMail();
197
- expect(sent?.subject).toBe('Verify Your Email Address');
198
- expect(sent?.html).toContain('889900');
199
- expect(sent?.text).toContain('Your verification code is: 889900');
198
+ expect(sent?.subject).toBe("Verify Your Email Address");
199
+ expect(sent?.html).toContain("889900");
200
+ expect(sent?.text).toContain("Your verification code is: 889900");
200
201
  });
201
202
  });
202
203
  ```
@@ -207,15 +208,15 @@ For custom HTML or plain-text messages. When `text` is omitted, an accessible pl
207
208
 
208
209
  ```ts
209
210
  await mailer.sendRaw({
210
- to: [{ address: 'support@example.com', name: 'Support Team' }],
211
- subject: 'Urgent System Alert',
212
- html: '<h1>System Alert</h1><p>Database failover completed successfully.</p>',
211
+ to: [{ address: "support@example.com", name: "Support Team" }],
212
+ subject: "Urgent System Alert",
213
+ html: "<h1>System Alert</h1><p>Database failover completed successfully.</p>",
213
214
  // text is optional — auto-converted from html if omitted
214
215
  attachments: [
215
216
  {
216
- filename: 'report.txt',
217
- content: 'Database log summary...',
218
- mimeType: 'text/plain',
217
+ filename: "report.txt",
218
+ content: "Database log summary...",
219
+ mimeType: "text/plain",
219
220
  },
220
221
  ],
221
222
  });
@@ -226,35 +227,85 @@ await mailer.sendRaw({
226
227
  If your application receives combined address strings like `"Jane Doe <jane@example.com>"`, use the standalone, tree-shakeable `parseEmailAddress` helper:
227
228
 
228
229
  ```ts
229
- import { parseEmailAddress } from 'ts-mailkit';
230
+ import { parseEmailAddress } from "ts-mailkit";
230
231
 
231
- const recipient = parseEmailAddress('Jane Doe <jane@example.com>');
232
+ const recipient = parseEmailAddress("Jane Doe <jane@example.com>");
232
233
  // => { address: 'jane@example.com', name: 'Jane Doe' }
233
234
 
234
- const simple = parseEmailAddress('jane@example.com');
235
+ const simple = parseEmailAddress("jane@example.com");
235
236
  // => { address: 'jane@example.com' }
236
237
  ```
237
238
 
238
239
  ### 6. Pluggable Transports (`IEmailSender`)
239
240
 
240
- You can implement custom transports (e.g. SMTP, Resend, SendGrid, Postmark) by satisfying the `IEmailSender` interface:
241
+ You can implement custom transports (e.g. SMTP, Resend, SendGrid, Postmark) by satisfying the `IEmailSender` interface. Bulk and provider-template capabilities are optional: implement `sendBulk`, `sendKnownTemplate`, and/or `sendBulkKnownTemplate` to enable them. `MailKit` throws a `ConfigurationError` if a method is called on a transport that does not implement it.
241
242
 
242
243
  ```ts
243
- import type { IEmailSender, SendMailOptions, SendResult } from 'ts-mailkit';
244
+ import type { IEmailSender, SendMailOptions, SendResult } from "ts-mailkit";
244
245
 
245
246
  export class CustomSmtpSender implements IEmailSender {
246
- readonly name = 'smtp';
247
+ readonly name = "smtp";
247
248
 
248
249
  async send(options: SendMailOptions): Promise<SendResult> {
249
250
  // Custom dispatch logic using your preferred protocol or client
250
251
  return {
251
252
  success: true,
252
- messageId: 'custom-id-123',
253
+ messageId: "custom-id-123",
253
254
  };
254
255
  }
255
256
  }
256
257
  ```
257
258
 
259
+ ### 7. Bulk Messaging & Provider-Side Templates
260
+
261
+ `MailKit` exposes four canonical send methods. Bulk methods hit the provider's batch endpoints directly (no client-side loops) and deliver an individual copy to each recipient.
262
+
263
+ ```ts
264
+ // 1. Bulk manual template: one rendered DTO, delivered individually to every recipient.
265
+ await mailer.sendBulkMail({
266
+ to: ["a@example.com", "b@example.com"],
267
+ template: newsletterDto,
268
+ trackClicks: true,
269
+ trackOpens: true,
270
+ });
271
+
272
+ // 2. Single provider-side template (uploaded to Zoho CPaaS / SendGrid beforehand).
273
+ await mailer.sendKnownTemplate({
274
+ templateId: "welcome-email",
275
+ to: "alex@example.com",
276
+ mergeInfo: { user_name: "Alex" },
277
+ });
278
+
279
+ // 3. Bulk provider-side template with per-recipient merge data.
280
+ await mailer.sendBulkKnownTemplate({
281
+ templateId: "welcome-email",
282
+ to: [
283
+ { address: "alex@example.com", name: "Alex", mergeInfo: { user_name: "Alex" } },
284
+ { address: "sam@example.com", name: "Sam", mergeInfo: { user_name: "Sam" } },
285
+ ],
286
+ });
287
+ ```
288
+
289
+ Set `CpaasHttpConfig.preferTemplateAlias: true` to send `template_alias` instead of `template_key`. Every transport returns a unified `SendResult` whose `rawResponse` field holds the provider's raw response (typed via the exported `CpaasSuccessResponse` / `CpaasErrorResponse` types).
290
+
291
+ ### 8. Building Upload-Ready Templates
292
+
293
+ `buildHTMLTemplate` and `buildPlainTextTemplate` turn the canonical `EmailTemplateDto` into content you can upload to a messaging platform:
294
+
295
+ ```ts
296
+ import { buildHTMLTemplate, buildPlainTextTemplate, EmailTemplateFactory } from "ts-mailkit";
297
+
298
+ const dto = EmailTemplateFactory.createSimpleMessage({
299
+ subject: "Welcome",
300
+ header: "Hello",
301
+ body: "Thanks for joining.",
302
+ });
303
+
304
+ const html = buildHTMLTemplate(dto, { primaryColor: "#0f766e", maxWidth: "640px" });
305
+ const text = buildPlainTextTemplate(dto);
306
+ // Upload `html` / `text` as a provider-side template, then send with `sendKnownTemplate`.
307
+ ```
308
+
258
309
  ---
259
310
 
260
311
  ## Template Preview
@@ -0,0 +1,196 @@
1
+ import type { EmailAttachment, Recipient, SendMailOptions } from "./types.js";
2
+ import type { EmailTemplateDto } from "../templates/dto/index.js";
3
+ /**
4
+ * A recipient with optional provider-side merge variables.
5
+ */
6
+ export interface BulkRecipient {
7
+ address: string;
8
+ name?: string;
9
+ /**
10
+ * Provider-side merge variables (e.g. Zoho CPaaS `merge_info`).
11
+ */
12
+ mergeInfo?: Record<string, string>;
13
+ }
14
+ /**
15
+ * Transport-level batch of a single raw email content to many recipients.
16
+ *
17
+ * The provider delivers an individual copy to each recipient, so recipients
18
+ * are not exposed to one another.
19
+ */
20
+ export interface BulkSendOptions extends SendMailOptions {
21
+ /**
22
+ * Enable or disable click tracking.
23
+ */
24
+ trackClicks?: boolean;
25
+ /**
26
+ * Enable or disable open tracking.
27
+ */
28
+ trackOpens?: boolean;
29
+ /**
30
+ * Verified bounce (Return-Path) address.
31
+ */
32
+ bounceAddress?: string;
33
+ /**
34
+ * Custom reference string to identify the email in your system.
35
+ */
36
+ clientReference?: string;
37
+ }
38
+ /**
39
+ * Options for sending a single email using a provider-side template.
40
+ */
41
+ export interface KnownTemplateSendOptions {
42
+ /**
43
+ * Provider-side template identifier (e.g. Zoho `template_key`).
44
+ */
45
+ templateId: string;
46
+ /**
47
+ * Recipient email address.
48
+ */
49
+ to: Recipient;
50
+ /**
51
+ * Optional sender address override.
52
+ */
53
+ from?: Recipient;
54
+ /**
55
+ * Template variable substitutions.
56
+ */
57
+ mergeInfo?: Record<string, string>;
58
+ /**
59
+ * Optional CC recipients.
60
+ */
61
+ cc?: Recipient | Recipient[];
62
+ /**
63
+ * Optional BCC recipients.
64
+ */
65
+ bcc?: Recipient | Recipient[];
66
+ /**
67
+ * Optional Reply-To recipients.
68
+ */
69
+ replyTo?: Recipient | Recipient[];
70
+ /**
71
+ * Optional file attachments.
72
+ */
73
+ attachments?: EmailAttachment[];
74
+ /**
75
+ * Enable or disable click tracking.
76
+ */
77
+ trackClicks?: boolean;
78
+ /**
79
+ * Enable or disable open tracking.
80
+ */
81
+ trackOpens?: boolean;
82
+ /**
83
+ * Verified bounce (Return-Path) address.
84
+ */
85
+ bounceAddress?: string;
86
+ /**
87
+ * Custom reference string to identify the email in your system.
88
+ */
89
+ clientReference?: string;
90
+ }
91
+ /**
92
+ * Options for sending a batch of emails using a provider-side template.
93
+ *
94
+ * Each recipient may carry its own `mergeInfo` so the provider can
95
+ * personalize the template per recipient.
96
+ */
97
+ export interface BulkKnownTemplateSendOptions {
98
+ /**
99
+ * Provider-side template identifier (e.g. Zoho `template_key`).
100
+ */
101
+ templateId: string;
102
+ /**
103
+ * Recipients, each with optional per-recipient merge variables.
104
+ */
105
+ to: BulkRecipient[];
106
+ /**
107
+ * Optional sender address override.
108
+ */
109
+ from?: Recipient;
110
+ /**
111
+ * Optional CC recipients.
112
+ */
113
+ cc?: Recipient | Recipient[];
114
+ /**
115
+ * Optional BCC recipients.
116
+ */
117
+ bcc?: Recipient | Recipient[];
118
+ /**
119
+ * Optional Reply-To recipients.
120
+ */
121
+ replyTo?: Recipient | Recipient[];
122
+ /**
123
+ * Optional file attachments.
124
+ */
125
+ attachments?: EmailAttachment[];
126
+ /**
127
+ * Enable or disable click tracking.
128
+ */
129
+ trackClicks?: boolean;
130
+ /**
131
+ * Enable or disable open tracking.
132
+ */
133
+ trackOpens?: boolean;
134
+ /**
135
+ * Verified bounce (Return-Path) address.
136
+ */
137
+ bounceAddress?: string;
138
+ /**
139
+ * Custom reference string to identify the email in your system.
140
+ */
141
+ clientReference?: string;
142
+ }
143
+ /**
144
+ * Client-level options for sending a bulk email using the in-built template DTO.
145
+ */
146
+ export interface SendBulkMailOptions {
147
+ /**
148
+ * Templated email DTO to render and send to every recipient.
149
+ */
150
+ template: EmailTemplateDto;
151
+ /**
152
+ * One or more recipient email addresses.
153
+ */
154
+ to: Recipient | Recipient[];
155
+ /**
156
+ * Optional sender address override.
157
+ */
158
+ from?: Recipient;
159
+ /**
160
+ * Optional CC recipients.
161
+ */
162
+ cc?: Recipient | Recipient[];
163
+ /**
164
+ * Optional BCC recipients.
165
+ */
166
+ bcc?: Recipient | Recipient[];
167
+ /**
168
+ * Optional Reply-To recipients.
169
+ */
170
+ replyTo?: Recipient | Recipient[];
171
+ /**
172
+ * Optional file attachments.
173
+ */
174
+ attachments?: EmailAttachment[];
175
+ /**
176
+ * Optional custom headers.
177
+ */
178
+ headers?: Record<string, string>;
179
+ /**
180
+ * Optional tags for tracking.
181
+ */
182
+ tags?: string[];
183
+ /**
184
+ * Optional metadata.
185
+ */
186
+ metadata?: Record<string, string>;
187
+ /**
188
+ * Enable or disable click tracking.
189
+ */
190
+ trackClicks?: boolean;
191
+ /**
192
+ * Enable or disable open tracking.
193
+ */
194
+ trackOpens?: boolean;
195
+ }
196
+ //# sourceMappingURL=bulk-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bulk-types.d.ts","sourceRoot":"","sources":["../../src/core/bulk-types.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
- import type { IEmailSender } from '../transports/sender.interface.js';
2
- import type { IEmailRenderer, RenderedEmail } from '../renderers/renderer.interface.js';
3
- import type { EmailTemplateDto } from '../templates/dto/index.js';
4
- import { type Recipient, type SendMailOptions, type SendResult } from './types.js';
1
+ import type { IEmailSender } from "../transports/sender.interface.js";
2
+ import type { IEmailRenderer, RenderedEmail } from "../renderers/renderer.interface.js";
3
+ import type { EmailTemplateDto } from "../templates/dto/index.js";
4
+ import { type Recipient, type SendMailOptions, type SendResult } from "./types.js";
5
+ import type { BulkKnownTemplateSendOptions, KnownTemplateSendOptions, SendBulkMailOptions } from "./bulk-types.js";
5
6
  export interface SendTemplateOptions {
6
7
  /**
7
8
  * One or more recipient email addresses.
@@ -38,7 +39,7 @@ export interface SendTemplateOptions {
38
39
  /**
39
40
  * Optional file attachments.
40
41
  */
41
- attachments?: SendMailOptions['attachments'];
42
+ attachments?: SendMailOptions["attachments"];
42
43
  /**
43
44
  * Optional custom headers.
44
45
  */
@@ -98,13 +99,44 @@ export declare class MailKit {
98
99
  *
99
100
  * Example:
100
101
  * ```ts
101
- * await mailer.send({
102
+ * await mailer.sendMail({
102
103
  * to: 'user@example.com',
103
104
  * template: myDto,
104
105
  * });
105
106
  * ```
106
107
  */
108
+ sendMail(options: SendTemplateOptions): Promise<SendResult>;
109
+ /**
110
+ * @deprecated Use {@link sendMail} instead.
111
+ */
107
112
  send(options: SendTemplateOptions): Promise<SendResult>;
113
+ /**
114
+ * Sends a bulk email using a strongly-typed template DTO.
115
+ *
116
+ * The transport delivers an individual copy to each recipient, so
117
+ * recipients are not exposed to one another. Per-recipient personalization
118
+ * is available via {@link sendBulkKnownTemplate}.
119
+ *
120
+ * Example:
121
+ * ```ts
122
+ * await mailer.sendBulkMail({
123
+ * to: ['a@example.com', 'b@example.com'],
124
+ * template: myDto,
125
+ * });
126
+ * ```
127
+ */
128
+ sendBulkMail(options: SendBulkMailOptions): Promise<SendResult>;
129
+ /**
130
+ * Sends a single email using a provider-side template.
131
+ */
132
+ sendKnownTemplate(options: KnownTemplateSendOptions): Promise<SendResult>;
133
+ /**
134
+ * Sends a bulk email using a provider-side template with optional
135
+ * per-recipient merge data.
136
+ */
137
+ sendBulkKnownTemplate(options: BulkKnownTemplateSendOptions): Promise<SendResult>;
138
+ private resolveFromName;
139
+ private applyFromName;
108
140
  /**
109
141
  * Dispatches a raw, pre-rendered email directly through the transport.
110
142
  * If `options.text` is omitted, plain text is automatically derived from `options.html`.
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/core/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAGxF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAGL,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,KAAK,UAAU,EAChB,MAAM,YAAY,CAAC;AAGpB,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,EAAE,EAAE,SAAS,GAAG,SAAS,EAAE,CAAC;IAC5B;;OAEG;IACH,QAAQ,EAAE,gBAAgB,CAAC;IAC3B;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;OAEG;IACH,EAAE,CAAC,EAAE,SAAS,GAAG,SAAS,EAAE,CAAC;IAC7B;;OAEG;IACH,GAAG,CAAC,EAAE,SAAS,GAAG,SAAS,EAAE,CAAC;IAC9B;;OAEG;IACH,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,EAAE,CAAC;IAClC;;OAEG;IACH,WAAW,CAAC,EAAE,eAAe,CAAC,aAAa,CAAC,CAAC;IAC7C;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,SAAS,EAAE,YAAY,CAAC;IACxB;;OAEG;IACH,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B;;OAEG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;CACpD;AAED;;GAEG;AACH,qBAAa,OAAO;IAClB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;IACzC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiB;IAC1C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAY;IACzC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAiC;IAEpE,YAAY,OAAO,EAAE,cAAc,EASlC;IAED;;OAEG;IACH,YAAY,IAAI,YAAY,CAE3B;IAED;;OAEG;IACG,MAAM,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,aAAa,CAAC,CAE/D;IAED;;;;;;;;;;OAUG;IACG,IAAI,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,UAAU,CAAC,CA8C5D;IAED;;;OAGG;IACG,OAAO,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC,CAQ3D;CACF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAE9D"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/core/client.ts"],"names":[],"mappings":"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"}
@@ -17,11 +17,14 @@ export declare class TransportError extends MailKitError {
17
17
  readonly transportName: string;
18
18
  readonly statusCode?: number;
19
19
  readonly responseBody?: string;
20
+ /** Parsed raw provider response, when available. */
21
+ readonly rawResponse?: unknown;
20
22
  readonly cause?: unknown;
21
23
  constructor(message: string, options: {
22
24
  transportName: string;
23
25
  statusCode?: number;
24
26
  responseBody?: string;
27
+ rawResponse?: unknown;
25
28
  cause?: unknown;
26
29
  });
27
30
  }
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,YAAa,SAAQ,KAAK;IACrC,YAAY,OAAO,EAAE,MAAM,EAI1B;CACF;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,YAAY;IAClD,YAAY,OAAO,EAAE,MAAM,EAI1B;CACF;AAED;;GAEG;AACH,qBAAa,cAAe,SAAQ,YAAY;IAC9C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAEzB,YACE,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;QACP,aAAa,EAAE,MAAM,CAAC;QACtB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,KAAK,CAAC,EAAE,OAAO,CAAC;KACjB,EASF;CACF;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,YAAY;IAC7C,YAAY,OAAO,EAAE,MAAM,EAI1B;CACF"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,YAAa,SAAQ,KAAK;IACrC,YAAY,OAAO,EAAE,MAAM,EAI1B;CACF;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,YAAY;IAClD,YAAY,OAAO,EAAE,MAAM,EAI1B;CACF;AAED;;GAEG;AACH,qBAAa,cAAe,SAAQ,YAAY;IAC9C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,oDAAoD;IACpD,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAEzB,YACE,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;QACP,aAAa,EAAE,MAAM,CAAC;QACtB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,KAAK,CAAC,EAAE,OAAO,CAAC;KACjB,EAUF;CACF;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,YAAY;IAC7C,YAAY,OAAO,EAAE,MAAM,EAI1B;CACF"}
@@ -66,6 +66,11 @@ export interface SendMailOptions {
66
66
  export interface SendResult {
67
67
  success: boolean;
68
68
  messageId?: string;
69
+ /** Raw provider response (e.g. Zoho CPaaS JSON body). */
70
+ rawResponse?: unknown;
71
+ /**
72
+ * @deprecated Use `rawResponse` instead.
73
+ */
69
74
  response?: unknown;
70
75
  }
71
76
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,MAAM,MAAM,SAAS,GACjB,MAAM,GACN,YAAY,GACZ;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAErC;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAa7D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,SAAS,GAAG,YAAY,CAcrE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,CAAC,EAAE,SAAS,GAAG,SAAS,EAAE,GACnC,YAAY,EAAE,CAIhB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,OAAO,EAAE,MAAM,GAAG,UAAU,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,SAAS,GAAG,SAAS,EAAE,CAAC;IAC5B,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,SAAS,GAAG,SAAS,EAAE,CAAC;IAC7B,GAAG,CAAC,EAAE,SAAS,GAAG,SAAS,EAAE,CAAC;IAC9B,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,EAAE,CAAC;IAClC,WAAW,CAAC,EAAE,eAAe,EAAE,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,YAAY,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjF;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAa7D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,SAAS,GAAG,YAAY,CAcrE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,CAAC,EAAE,SAAS,GAAG,SAAS,EAAE,GAAG,YAAY,EAAE,CAIxF;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,OAAO,EAAE,MAAM,GAAG,UAAU,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,SAAS,GAAG,SAAS,EAAE,CAAC;IAC5B,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,SAAS,GAAG,SAAS,EAAE,CAAC;IAC7B,GAAG,CAAC,EAAE,SAAS,GAAG,SAAS,EAAE,CAAC;IAC9B,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,EAAE,CAAC;IAClC,WAAW,CAAC,EAAE,eAAe,EAAE,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yDAAyD;IACzD,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB"}