@impruthvi/nodemail 0.2.0 → 0.4.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.
- package/CHANGELOG.md +90 -0
- package/README.md +222 -19
- package/dist/core/MailFacade.d.ts +1 -0
- package/dist/core/MailFacade.d.ts.map +1 -1
- package/dist/core/MailFacade.js +4 -0
- package/dist/core/MailFacade.js.map +1 -1
- package/dist/core/MailManager.d.ts +11 -2
- package/dist/core/MailManager.d.ts.map +1 -1
- package/dist/core/MailManager.js +88 -1
- package/dist/core/MailManager.js.map +1 -1
- package/dist/core/Mailable.d.ts +12 -2
- package/dist/core/Mailable.d.ts.map +1 -1
- package/dist/core/Mailable.js +44 -2
- package/dist/core/Mailable.js.map +1 -1
- package/dist/index.d.ts +6 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -2
- package/dist/index.js.map +1 -1
- package/dist/providers/MailgunProvider.d.ts +15 -0
- package/dist/providers/MailgunProvider.d.ts.map +1 -0
- package/dist/providers/MailgunProvider.js +103 -0
- package/dist/providers/MailgunProvider.js.map +1 -0
- package/dist/providers/PostmarkProvider.d.ts +11 -0
- package/dist/providers/PostmarkProvider.d.ts.map +1 -0
- package/dist/providers/PostmarkProvider.js +84 -0
- package/dist/providers/PostmarkProvider.js.map +1 -0
- package/dist/providers/ResendProvider.d.ts +11 -0
- package/dist/providers/ResendProvider.d.ts.map +1 -0
- package/dist/providers/ResendProvider.js +82 -0
- package/dist/providers/ResendProvider.js.map +1 -0
- package/dist/templates/EjsEngine.d.ts +14 -0
- package/dist/templates/EjsEngine.d.ts.map +1 -0
- package/dist/templates/EjsEngine.js +59 -0
- package/dist/templates/EjsEngine.js.map +1 -0
- package/dist/templates/HandlebarsEngine.d.ts +16 -0
- package/dist/templates/HandlebarsEngine.d.ts.map +1 -0
- package/dist/templates/HandlebarsEngine.js +65 -0
- package/dist/templates/HandlebarsEngine.js.map +1 -0
- package/dist/templates/PugEngine.d.ts +15 -0
- package/dist/templates/PugEngine.d.ts.map +1 -0
- package/dist/templates/PugEngine.js +70 -0
- package/dist/templates/PugEngine.js.map +1 -0
- package/dist/templates/TemplateEngine.d.ts +12 -0
- package/dist/templates/TemplateEngine.d.ts.map +1 -0
- package/dist/templates/TemplateEngine.js +3 -0
- package/dist/templates/TemplateEngine.js.map +1 -0
- package/dist/templates/index.d.ts +5 -0
- package/dist/templates/index.d.ts.map +1 -0
- package/dist/templates/index.js +10 -0
- package/dist/templates/index.js.map +1 -0
- package/dist/types/index.d.ts +9 -0
- package/dist/types/index.d.ts.map +1 -1
- package/examples/mailgun.ts +26 -0
- package/examples/postmark.ts +25 -0
- package/examples/resend.ts +25 -0
- package/examples/views/invoice.ejs +26 -0
- package/examples/views/notification.pug +14 -0
- package/examples/views/welcome.hbs +15 -0
- package/examples/with-ejs.ts +63 -0
- package/examples/with-handlebars.ts +60 -0
- package/examples/with-mailable-templates.ts +146 -0
- package/examples/with-pug.ts +66 -0
- package/package.json +20 -6
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,96 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.4.0] - 2025-12-07
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
- **Template Engine Support** (Phase 4 complete)
|
|
14
|
+
- HandlebarsEngine with dynamic loading and caching
|
|
15
|
+
- EjsEngine with dynamic loading and caching
|
|
16
|
+
- PugEngine with dynamic loading and caching
|
|
17
|
+
- TemplateEngine interface for custom engines
|
|
18
|
+
- **Complete Fluent API** - All email options now chainable
|
|
19
|
+
- Added `cc()` method for carbon copy recipients
|
|
20
|
+
- Added `bcc()` method for blind carbon copy recipients
|
|
21
|
+
- Added `replyTo()` method for reply-to addresses
|
|
22
|
+
- Added `attachments()` method for file attachments
|
|
23
|
+
- Added `headers()` method for custom headers
|
|
24
|
+
- **Laravel-like Mailable Pattern** - Elegant email class API
|
|
25
|
+
- `Mailable.to()` method for setting recipients
|
|
26
|
+
- `Mailable.send()` method for direct sending
|
|
27
|
+
- `Mail.to().send(mailable)` Laravel-style syntax (recommended)
|
|
28
|
+
- `mailable.to().send()` alternative direct syntax
|
|
29
|
+
- Protected methods: `cc()`, `bcc()`, `replyTo()`, `attach()`, `withHeaders()`
|
|
30
|
+
- Enhanced MailManager with automatic template rendering
|
|
31
|
+
- Added template configuration to MailConfig
|
|
32
|
+
- Support for 'handlebars', 'ejs', 'pug' engines
|
|
33
|
+
- Custom engine instance support
|
|
34
|
+
- Configurable views path, extension, and caching
|
|
35
|
+
- Template engine tests (34 new tests)
|
|
36
|
+
- HandlebarsEngine.test.ts (11 tests)
|
|
37
|
+
- EjsEngine.test.ts (11 tests)
|
|
38
|
+
- PugEngine.test.ts (12 tests)
|
|
39
|
+
- Mailable tests (10 new tests)
|
|
40
|
+
- Comprehensive Mailable class testing
|
|
41
|
+
- Template support validation
|
|
42
|
+
- Laravel-style API testing
|
|
43
|
+
- Template examples
|
|
44
|
+
- examples/with-handlebars.ts
|
|
45
|
+
- examples/with-ejs.ts
|
|
46
|
+
- examples/with-pug.ts
|
|
47
|
+
- examples/with-mailable-templates.ts (refactored)
|
|
48
|
+
- examples/views/ directory with sample templates
|
|
49
|
+
- Test utilities
|
|
50
|
+
- test-smtp-ethereal.ts for instant SMTP testing
|
|
51
|
+
- test-templates.ts for template engine validation
|
|
52
|
+
|
|
53
|
+
### Changed
|
|
54
|
+
- **BREAKING**: Refactored Mailable class to Laravel-like pattern
|
|
55
|
+
- Removed `getMailOptions()` method
|
|
56
|
+
- Now uses `build()` method with fluent API
|
|
57
|
+
- Direct sending capability added
|
|
58
|
+
- Updated package.json to version 0.4.0
|
|
59
|
+
- Added handlebars, ejs, pug to peerDependencies (all optional)
|
|
60
|
+
- Enhanced MessageBuilder.send() to accept Mailable instances
|
|
61
|
+
- Updated test suite: 122 total tests (17 new tests added)
|
|
62
|
+
- Code coverage: 85%+ overall
|
|
63
|
+
- Template engines coverage: 93.5%
|
|
64
|
+
- ESLint configuration for all directories (src, examples, tests)
|
|
65
|
+
|
|
66
|
+
### Fixed
|
|
67
|
+
- Type safety for template engine configuration
|
|
68
|
+
- Promise handling in template rendering
|
|
69
|
+
- ESLint warnings for template engine dynamic loading
|
|
70
|
+
- ESLint parsing errors for examples directory
|
|
71
|
+
- Floating promise warnings in example files
|
|
72
|
+
|
|
73
|
+
## [0.3.0] - 2025-11-25
|
|
74
|
+
|
|
75
|
+
### Added
|
|
76
|
+
- **New email providers** (3 additional providers)
|
|
77
|
+
- MailgunProvider with dynamic loading
|
|
78
|
+
- ResendProvider with dynamic loading
|
|
79
|
+
- PostmarkProvider with dynamic loading
|
|
80
|
+
- Example files for new providers
|
|
81
|
+
- examples/mailgun.ts
|
|
82
|
+
- examples/resend.ts
|
|
83
|
+
- examples/postmark.ts
|
|
84
|
+
- Support for all provider-specific features
|
|
85
|
+
- Mailgun: EU region support, custom headers
|
|
86
|
+
- Resend: Tags and custom headers
|
|
87
|
+
- Postmark: Message streams and tags
|
|
88
|
+
- Updated MailManager to support 6 total providers
|
|
89
|
+
|
|
90
|
+
### Changed
|
|
91
|
+
- Updated README with documentation for Mailgun, Resend, and Postmark
|
|
92
|
+
- Updated package.json to version 0.3.0
|
|
93
|
+
- Added form-data as peer dependency for Mailgun
|
|
94
|
+
- Updated provider installation instructions
|
|
95
|
+
|
|
96
|
+
### Fixed
|
|
97
|
+
- TypeScript strict mode compliance for new providers
|
|
98
|
+
- ESLint warnings with proper annotations
|
|
99
|
+
|
|
10
100
|
## [0.2.0] - 2025-11-23
|
|
11
101
|
|
|
12
102
|
### Added
|
package/README.md
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
|
-
# nodemail
|
|
1
|
+
# @impruthvi/nodemail
|
|
2
2
|
|
|
3
|
+
[](https://www.npmjs.com/package/@impruthvi/nodemail)
|
|
3
4
|
[](https://opensource.org/licenses/MIT)
|
|
4
5
|
[](https://www.typescriptlang.org/)
|
|
6
|
+
[](https://github.com/impruthvi/nodemail)
|
|
7
|
+
[](https://github.com/impruthvi/nodemail)
|
|
5
8
|
|
|
6
9
|
> 🚧 **Work in Progress** - A unified mail service for Node.js/TypeScript inspired by Laravel's elegant Mail system.
|
|
7
10
|
|
|
8
|
-
|
|
11
|
+
**@impruthvi/nodemail** aims to bring the simplicity and elegance of Laravel's Mail system to the Node.js ecosystem with full TypeScript support.
|
|
9
12
|
|
|
10
13
|
## 🎯 Vision
|
|
11
14
|
|
|
@@ -19,28 +22,33 @@ Inspired by [Laravel's Mail system](https://laravel.com/docs/mail).
|
|
|
19
22
|
|
|
20
23
|
## ✨ Features
|
|
21
24
|
|
|
22
|
-
### ✅ Available Now
|
|
23
|
-
- 🎯 **Multiple Providers** - SMTP (Nodemailer), SendGrid, AWS SES
|
|
25
|
+
### ✅ Available Now (v0.4.0)
|
|
26
|
+
- 🎯 **Multiple Providers** - SMTP (Nodemailer), SendGrid, AWS SES, Mailgun, Resend, Postmark
|
|
27
|
+
- 🎨 **Template Engines** - Handlebars, EJS, Pug support with dynamic loading
|
|
28
|
+
- 📝 **Mailable Classes** - Reusable email definitions with template support
|
|
24
29
|
- 🪶 **Lightweight** - Only ~25MB with SMTP, install additional providers as needed
|
|
25
30
|
- 🔒 **Type-Safe** - Full TypeScript support with strict typing
|
|
26
|
-
-
|
|
27
|
-
- ⚡ **Dynamic Loading** - Providers loaded only when installed (peerDependencies)
|
|
31
|
+
- ✨ **Complete Fluent API** - Chain to(), subject(), html(), template(), data(), cc(), bcc(), attachments(), headers()
|
|
32
|
+
- ⚡ **Dynamic Loading** - Providers and templates loaded only when installed (peerDependencies)
|
|
28
33
|
- 🛡️ **Error Handling** - Graceful degradation with helpful error messages
|
|
29
34
|
|
|
30
35
|
### 🚧 Coming Soon
|
|
31
|
-
- 📝 **Mailable Classes** - Enhanced reusable email definitions
|
|
32
36
|
- 🔔 **Notifications** - Multi-channel notification system
|
|
33
37
|
- 📋 **Markdown Mail** - Beautiful emails from markdown
|
|
34
38
|
- 🧪 **Testing Utilities** - Mail::fake() for testing
|
|
35
39
|
- 📦 **Queue Support** - Background email sending (Bull/BullMQ)
|
|
36
|
-
- 🎨 **Template Engines** - Handlebars, EJS, Pug
|
|
37
40
|
- 🌍 **i18n Support** - Multi-language emails
|
|
38
|
-
- 🚀 **More Providers** -
|
|
41
|
+
- 🚀 **More Providers** - Mailtrap and others
|
|
39
42
|
|
|
40
43
|
## 📦 Installation
|
|
41
44
|
|
|
42
45
|
```bash
|
|
43
|
-
npm install nodemail
|
|
46
|
+
npm install @impruthvi/nodemail@beta
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Or for the latest stable (when v1.0.0 is released):
|
|
50
|
+
```bash
|
|
51
|
+
npm install @impruthvi/nodemail
|
|
44
52
|
```
|
|
45
53
|
|
|
46
54
|
**Lightweight by default!** Only includes SMTP support (~25MB).
|
|
@@ -54,20 +62,31 @@ npm install @sendgrid/mail
|
|
|
54
62
|
|
|
55
63
|
# AWS SES (✅ Implemented)
|
|
56
64
|
npm install @aws-sdk/client-ses
|
|
57
|
-
```
|
|
58
65
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
# Mailgun
|
|
62
|
-
npm install mailgun.js
|
|
66
|
+
# Mailgun (✅ Implemented)
|
|
67
|
+
npm install mailgun.js form-data
|
|
63
68
|
|
|
64
|
-
# Resend
|
|
69
|
+
# Resend (✅ Implemented)
|
|
65
70
|
npm install resend
|
|
66
71
|
|
|
67
|
-
# Postmark
|
|
72
|
+
# Postmark (✅ Implemented)
|
|
68
73
|
npm install postmark
|
|
69
74
|
```
|
|
70
75
|
|
|
76
|
+
### Adding Template Engines (Optional)
|
|
77
|
+
|
|
78
|
+
**Currently Supported:**
|
|
79
|
+
```bash
|
|
80
|
+
# Handlebars (✅ Implemented)
|
|
81
|
+
npm install handlebars
|
|
82
|
+
|
|
83
|
+
# EJS (✅ Implemented)
|
|
84
|
+
npm install ejs
|
|
85
|
+
|
|
86
|
+
# Pug (✅ Implemented)
|
|
87
|
+
npm install pug
|
|
88
|
+
```
|
|
89
|
+
|
|
71
90
|
## 🚀 Quick Start
|
|
72
91
|
|
|
73
92
|
### SMTP (Nodemailer)
|
|
@@ -105,6 +124,8 @@ await Mail.to('user@example.com')
|
|
|
105
124
|
|
|
106
125
|
```typescript
|
|
107
126
|
// npm install @sendgrid/mail
|
|
127
|
+
import { Mail } from '@impruthvi/nodemail';
|
|
128
|
+
|
|
108
129
|
Mail.configure({
|
|
109
130
|
default: 'sendgrid',
|
|
110
131
|
from: { address: 'noreply@example.com', name: 'My App' },
|
|
@@ -121,6 +142,8 @@ Mail.configure({
|
|
|
121
142
|
|
|
122
143
|
```typescript
|
|
123
144
|
// npm install @aws-sdk/client-ses
|
|
145
|
+
import { Mail } from '@impruthvi/nodemail';
|
|
146
|
+
|
|
124
147
|
Mail.configure({
|
|
125
148
|
default: 'ses',
|
|
126
149
|
from: { address: 'noreply@example.com', name: 'My App' },
|
|
@@ -135,6 +158,186 @@ Mail.configure({
|
|
|
135
158
|
});
|
|
136
159
|
```
|
|
137
160
|
|
|
161
|
+
### Mailgun
|
|
162
|
+
|
|
163
|
+
```typescript
|
|
164
|
+
// npm install mailgun.js form-data
|
|
165
|
+
import { Mail } from '@impruthvi/nodemail';
|
|
166
|
+
|
|
167
|
+
Mail.configure({
|
|
168
|
+
default: 'mailgun',
|
|
169
|
+
from: { address: 'noreply@yourdomain.com', name: 'My App' },
|
|
170
|
+
mailers: {
|
|
171
|
+
mailgun: {
|
|
172
|
+
driver: 'mailgun',
|
|
173
|
+
domain: process.env.MAILGUN_DOMAIN,
|
|
174
|
+
apiKey: process.env.MAILGUN_API_KEY,
|
|
175
|
+
region: 'us', // or 'eu'
|
|
176
|
+
},
|
|
177
|
+
},
|
|
178
|
+
});
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
### Resend
|
|
182
|
+
|
|
183
|
+
```typescript
|
|
184
|
+
// npm install resend
|
|
185
|
+
import { Mail } from '@impruthvi/nodemail';
|
|
186
|
+
|
|
187
|
+
Mail.configure({
|
|
188
|
+
default: 'resend',
|
|
189
|
+
from: { address: 'noreply@yourdomain.com', name: 'My App' },
|
|
190
|
+
mailers: {
|
|
191
|
+
resend: {
|
|
192
|
+
driver: 'resend',
|
|
193
|
+
apiKey: process.env.RESEND_API_KEY,
|
|
194
|
+
},
|
|
195
|
+
},
|
|
196
|
+
});
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
### Postmark
|
|
200
|
+
|
|
201
|
+
```typescript
|
|
202
|
+
// npm install postmark
|
|
203
|
+
import { Mail } from '@impruthvi/nodemail';
|
|
204
|
+
|
|
205
|
+
Mail.configure({
|
|
206
|
+
default: 'postmark',
|
|
207
|
+
from: { address: 'noreply@yourdomain.com', name: 'My App' },
|
|
208
|
+
mailers: {
|
|
209
|
+
postmark: {
|
|
210
|
+
driver: 'postmark',
|
|
211
|
+
serverToken: process.env.POSTMARK_SERVER_TOKEN,
|
|
212
|
+
},
|
|
213
|
+
},
|
|
214
|
+
});
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
## 🎨 Template Engines
|
|
218
|
+
|
|
219
|
+
### Using Handlebars
|
|
220
|
+
|
|
221
|
+
```typescript
|
|
222
|
+
// npm install handlebars
|
|
223
|
+
import { Mail } from '@impruthvi/nodemail';
|
|
224
|
+
|
|
225
|
+
Mail.configure({
|
|
226
|
+
default: 'smtp',
|
|
227
|
+
from: { address: 'noreply@example.com', name: 'My App' },
|
|
228
|
+
mailers: { /* your mailer config */ },
|
|
229
|
+
templates: {
|
|
230
|
+
engine: 'handlebars',
|
|
231
|
+
viewsPath: './views/emails',
|
|
232
|
+
extension: '.hbs',
|
|
233
|
+
cache: true,
|
|
234
|
+
},
|
|
235
|
+
});
|
|
236
|
+
|
|
237
|
+
// Send with template
|
|
238
|
+
await Mail.to('user@example.com')
|
|
239
|
+
.subject('Welcome!')
|
|
240
|
+
.template('welcome')
|
|
241
|
+
.data({ name: 'John', appName: 'My App' })
|
|
242
|
+
.send();
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
**Template file** (`views/emails/welcome.hbs`):
|
|
246
|
+
```handlebars
|
|
247
|
+
<h1>Welcome, {{name}}!</h1>
|
|
248
|
+
<p>Thank you for joining {{appName}}.</p>
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
### Using EJS
|
|
252
|
+
|
|
253
|
+
```typescript
|
|
254
|
+
// npm install ejs
|
|
255
|
+
Mail.configure({
|
|
256
|
+
templates: {
|
|
257
|
+
engine: 'ejs',
|
|
258
|
+
viewsPath: './views/emails',
|
|
259
|
+
extension: '.ejs',
|
|
260
|
+
},
|
|
261
|
+
});
|
|
262
|
+
|
|
263
|
+
await Mail.to('customer@example.com')
|
|
264
|
+
.subject('Your Invoice')
|
|
265
|
+
.template('invoice')
|
|
266
|
+
.data({ items: [...], total: 99.99 })
|
|
267
|
+
.send();
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
### Using Pug
|
|
271
|
+
|
|
272
|
+
```typescript
|
|
273
|
+
// npm install pug
|
|
274
|
+
Mail.configure({
|
|
275
|
+
templates: {
|
|
276
|
+
engine: 'pug',
|
|
277
|
+
viewsPath: './views/emails',
|
|
278
|
+
cache: true,
|
|
279
|
+
},
|
|
280
|
+
});
|
|
281
|
+
|
|
282
|
+
await Mail.to('user@example.com')
|
|
283
|
+
.subject('Notification')
|
|
284
|
+
.template('notification')
|
|
285
|
+
.data({ title: 'Update', message: 'New features!' })
|
|
286
|
+
.send();
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
## 📨 Complete Fluent API
|
|
290
|
+
|
|
291
|
+
```typescript
|
|
292
|
+
await Mail.to('user@example.com')
|
|
293
|
+
.subject('Complete Example')
|
|
294
|
+
.html('<h1>Hello!</h1>')
|
|
295
|
+
.text('Hello!')
|
|
296
|
+
.from('custom@example.com')
|
|
297
|
+
.cc(['manager@example.com', 'team@example.com'])
|
|
298
|
+
.bcc('archive@example.com')
|
|
299
|
+
.replyTo('support@example.com')
|
|
300
|
+
.attachments([
|
|
301
|
+
{ filename: 'report.pdf', path: './files/report.pdf' },
|
|
302
|
+
{ filename: 'image.png', content: buffer },
|
|
303
|
+
])
|
|
304
|
+
.headers({ 'X-Custom-Header': 'value' })
|
|
305
|
+
.send();
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
## 📝 Mailable Classes
|
|
309
|
+
|
|
310
|
+
Create reusable email classes with Laravel-like syntax:
|
|
311
|
+
|
|
312
|
+
```typescript
|
|
313
|
+
import { Mailable } from '@impruthvi/nodemail';
|
|
314
|
+
|
|
315
|
+
class WelcomeEmail extends Mailable {
|
|
316
|
+
constructor(
|
|
317
|
+
private user: { name: string; email: string },
|
|
318
|
+
private appName: string
|
|
319
|
+
) {
|
|
320
|
+
super();
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
build() {
|
|
324
|
+
return this
|
|
325
|
+
.subject(`Welcome to ${this.appName}!`)
|
|
326
|
+
.view('welcome', {
|
|
327
|
+
name: this.user.name,
|
|
328
|
+
email: this.user.email,
|
|
329
|
+
appName: this.appName,
|
|
330
|
+
});
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
// Method 1: Laravel-style (recommended)
|
|
335
|
+
await Mail.to('user@example.com').send(new WelcomeEmail(user, 'My App'));
|
|
336
|
+
|
|
337
|
+
// Method 2: Direct sending
|
|
338
|
+
await new WelcomeEmail(user, 'My App').to('user@example.com').send();
|
|
339
|
+
```
|
|
340
|
+
|
|
138
341
|
**Advanced usage (coming soon):**
|
|
139
342
|
|
|
140
343
|
```typescript
|
|
@@ -281,10 +484,10 @@ If you've used Laravel's Mail system, you know how elegant it is:
|
|
|
281
484
|
Mail::to($user->email)->send(new WelcomeEmail($user));
|
|
282
485
|
```
|
|
283
486
|
|
|
284
|
-
|
|
487
|
+
**@impruthvi/nodemail** brings this same elegance to Node.js/TypeScript:
|
|
285
488
|
|
|
286
489
|
```typescript
|
|
287
|
-
// nodemail (TypeScript)
|
|
490
|
+
// @impruthvi/nodemail (TypeScript)
|
|
288
491
|
await Mail.to(user.email).send(new WelcomeEmail(user));
|
|
289
492
|
```
|
|
290
493
|
|
|
@@ -6,6 +6,7 @@ declare class MailFacade {
|
|
|
6
6
|
private static getInstance;
|
|
7
7
|
static to(address: string | string[]): import("./MailManager").MessageBuilder;
|
|
8
8
|
static mailer(name: string): MailManager;
|
|
9
|
+
static send(mailable: import('./Mailable').Mailable): Promise<import('../types').MailResponse>;
|
|
9
10
|
static fake(): void;
|
|
10
11
|
static assertSent(): void;
|
|
11
12
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MailFacade.d.ts","sourceRoot":"","sources":["../../src/core/MailFacade.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C,cAAM,UAAU;IACd,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA4B;IAKnD,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAO1C,OAAO,CAAC,MAAM,CAAC,WAAW;IAU1B,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAOpC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"MailFacade.d.ts","sourceRoot":"","sources":["../../src/core/MailFacade.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C,cAAM,UAAU;IACd,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA4B;IAKnD,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAO1C,OAAO,CAAC,MAAM,CAAC,WAAW;IAU1B,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAOpC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM;WAOb,IAAI,CAAC,QAAQ,EAAE,OAAO,YAAY,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,UAAU,EAAE,YAAY,CAAC;IAQpG,MAAM,CAAC,IAAI,IAAI,IAAI;IAQnB,MAAM,CAAC,UAAU,IAAI,IAAI;CAI1B;AAED,OAAO,EAAE,UAAU,IAAI,IAAI,EAAE,CAAC"}
|
package/dist/core/MailFacade.js
CHANGED
|
@@ -19,6 +19,10 @@ class MailFacade {
|
|
|
19
19
|
static mailer(name) {
|
|
20
20
|
return this.getInstance().mailer(name);
|
|
21
21
|
}
|
|
22
|
+
static async send(mailable) {
|
|
23
|
+
mailable.setMailManager(this.getInstance());
|
|
24
|
+
return mailable.send();
|
|
25
|
+
}
|
|
22
26
|
static fake() {
|
|
23
27
|
throw new Error('Mail.fake() not yet implemented');
|
|
24
28
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MailFacade.js","sourceRoot":"","sources":["../../src/core/MailFacade.ts"],"names":[],"mappings":";;;AAKA,+CAA4C;AAG5C,MAAM,UAAU;IACN,MAAM,CAAC,QAAQ,GAAuB,IAAI,CAAC;IAKnD,MAAM,CAAC,SAAS,CAAC,MAAkB;QACjC,IAAI,CAAC,QAAQ,GAAG,IAAI,yBAAW,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC;IAKO,MAAM,CAAC,WAAW;QACxB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;QAC1F,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAKD,MAAM,CAAC,EAAE,CAAC,OAA0B;QAClC,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;IAKD,MAAM,CAAC,MAAM,CAAC,IAAY;QACxB,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAKD,MAAM,CAAC,IAAI;QAET,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;IAKD,MAAM,CAAC,UAAU;QAEf,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;;AAGoB,0BAAI"}
|
|
1
|
+
{"version":3,"file":"MailFacade.js","sourceRoot":"","sources":["../../src/core/MailFacade.ts"],"names":[],"mappings":";;;AAKA,+CAA4C;AAG5C,MAAM,UAAU;IACN,MAAM,CAAC,QAAQ,GAAuB,IAAI,CAAC;IAKnD,MAAM,CAAC,SAAS,CAAC,MAAkB;QACjC,IAAI,CAAC,QAAQ,GAAG,IAAI,yBAAW,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC;IAKO,MAAM,CAAC,WAAW;QACxB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;QAC1F,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAKD,MAAM,CAAC,EAAE,CAAC,OAA0B;QAClC,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;IAKD,MAAM,CAAC,MAAM,CAAC,IAAY;QACxB,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAKD,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAuC;QACvD,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAC5C,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC;IAKD,MAAM,CAAC,IAAI;QAET,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;IAKD,MAAM,CAAC,UAAU;QAEf,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;;AAGoB,0BAAI"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import type { MailConfig, MailOptions, MailResponse } from '../types';
|
|
1
|
+
import type { MailConfig, MailOptions, MailResponse, Attachment } from '../types';
|
|
2
2
|
export declare class MailManager {
|
|
3
3
|
private config;
|
|
4
4
|
private providers;
|
|
5
|
+
private templateEngine?;
|
|
5
6
|
constructor(config: MailConfig);
|
|
7
|
+
private initializeTemplateEngine;
|
|
6
8
|
private createProvider;
|
|
7
9
|
private getProvider;
|
|
8
10
|
to(address: string | string[]): MessageBuilder;
|
|
@@ -18,6 +20,13 @@ export declare class MessageBuilder {
|
|
|
18
20
|
html(html: string): this;
|
|
19
21
|
text(text: string): this;
|
|
20
22
|
from(from: string): this;
|
|
21
|
-
|
|
23
|
+
cc(cc: string | string[]): this;
|
|
24
|
+
bcc(bcc: string | string[]): this;
|
|
25
|
+
replyTo(replyTo: string): this;
|
|
26
|
+
attachments(attachments: Attachment[]): this;
|
|
27
|
+
headers(headers: Record<string, string>): this;
|
|
28
|
+
template(template: string): this;
|
|
29
|
+
data(data: Record<string, unknown>): this;
|
|
30
|
+
send(mailable?: import('./Mailable').Mailable): Promise<MailResponse>;
|
|
22
31
|
}
|
|
23
32
|
//# sourceMappingURL=MailManager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MailManager.d.ts","sourceRoot":"","sources":["../../src/core/MailManager.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EAEX,YAAY,
|
|
1
|
+
{"version":3,"file":"MailManager.d.ts","sourceRoot":"","sources":["../../src/core/MailManager.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EAEX,YAAY,EAEZ,UAAU,EACX,MAAM,UAAU,CAAC;AAYlB,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,SAAS,CAAwC;IACzD,OAAO,CAAC,cAAc,CAAC,CAAiB;gBAE5B,MAAM,EAAE,UAAU;IAS9B,OAAO,CAAC,wBAAwB;IA0ChC,OAAO,CAAC,cAAc;IAsBtB,OAAO,CAAC,WAAW;IAyBnB,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAO7B,MAAM,CAAC,IAAI,EAAE,MAAM;IAab,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IAiBvD,gBAAgB,IAAI,MAAM;CAG3B;AAKD,qBAAa,cAAc;IAIvB,OAAO,CAAC,OAAO;IAHV,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,CAAM;gBAGhC,OAAO,EAAE,WAAW,EAC5B,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE;IAKvB,OAAO,CAAC,OAAO,EAAE,MAAM;IAKvB,IAAI,CAAC,IAAI,EAAE,MAAM;IAKjB,IAAI,CAAC,IAAI,EAAE,MAAM;IAKjB,IAAI,CAAC,IAAI,EAAE,MAAM;IAKjB,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE;IAKxB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE;IAK1B,OAAO,CAAC,OAAO,EAAE,MAAM;IAKvB,WAAW,CAAC,WAAW,EAAE,UAAU,EAAE;IAKrC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAKvC,QAAQ,CAAC,QAAQ,EAAE,MAAM;IAKzB,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAK5B,IAAI,CAAC,QAAQ,CAAC,EAAE,OAAO,YAAY,EAAE,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC;CAoB5E"}
|
package/dist/core/MailManager.js
CHANGED
|
@@ -4,11 +4,52 @@ exports.MessageBuilder = exports.MailManager = void 0;
|
|
|
4
4
|
const SmtpProvider_1 = require("../providers/SmtpProvider");
|
|
5
5
|
const SendGridProvider_1 = require("../providers/SendGridProvider");
|
|
6
6
|
const SesProvider_1 = require("../providers/SesProvider");
|
|
7
|
+
const MailgunProvider_1 = require("../providers/MailgunProvider");
|
|
8
|
+
const ResendProvider_1 = require("../providers/ResendProvider");
|
|
9
|
+
const PostmarkProvider_1 = require("../providers/PostmarkProvider");
|
|
10
|
+
const HandlebarsEngine_1 = require("../templates/HandlebarsEngine");
|
|
11
|
+
const EjsEngine_1 = require("../templates/EjsEngine");
|
|
12
|
+
const PugEngine_1 = require("../templates/PugEngine");
|
|
7
13
|
class MailManager {
|
|
8
14
|
config;
|
|
9
15
|
providers = new Map();
|
|
16
|
+
templateEngine;
|
|
10
17
|
constructor(config) {
|
|
11
18
|
this.config = config;
|
|
19
|
+
this.initializeTemplateEngine();
|
|
20
|
+
}
|
|
21
|
+
initializeTemplateEngine() {
|
|
22
|
+
if (!this.config.templates) {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
const { engine, viewsPath, extension, cache, options } = this.config.templates;
|
|
26
|
+
if (!engine) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
const engineOptions = {
|
|
30
|
+
...(viewsPath && { viewsPath }),
|
|
31
|
+
...(extension && { extension }),
|
|
32
|
+
...(cache !== undefined && { cache }),
|
|
33
|
+
...(options && { options }),
|
|
34
|
+
};
|
|
35
|
+
if (typeof engine === 'string') {
|
|
36
|
+
switch (engine) {
|
|
37
|
+
case 'handlebars':
|
|
38
|
+
this.templateEngine = new HandlebarsEngine_1.HandlebarsEngine(engineOptions);
|
|
39
|
+
break;
|
|
40
|
+
case 'ejs':
|
|
41
|
+
this.templateEngine = new EjsEngine_1.EjsEngine(engineOptions);
|
|
42
|
+
break;
|
|
43
|
+
case 'pug':
|
|
44
|
+
this.templateEngine = new PugEngine_1.PugEngine(engineOptions);
|
|
45
|
+
break;
|
|
46
|
+
default:
|
|
47
|
+
throw new Error(`Unsupported template engine: ${engine}`);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
this.templateEngine = engine;
|
|
52
|
+
}
|
|
12
53
|
}
|
|
13
54
|
createProvider(mailerConfig) {
|
|
14
55
|
switch (mailerConfig.driver) {
|
|
@@ -18,6 +59,12 @@ class MailManager {
|
|
|
18
59
|
return new SendGridProvider_1.SendGridProvider(mailerConfig);
|
|
19
60
|
case 'ses':
|
|
20
61
|
return new SesProvider_1.SesProvider(mailerConfig);
|
|
62
|
+
case 'mailgun':
|
|
63
|
+
return new MailgunProvider_1.MailgunProvider(mailerConfig);
|
|
64
|
+
case 'resend':
|
|
65
|
+
return new ResendProvider_1.ResendProvider(mailerConfig);
|
|
66
|
+
case 'postmark':
|
|
67
|
+
return new PostmarkProvider_1.PostmarkProvider(mailerConfig);
|
|
21
68
|
default:
|
|
22
69
|
throw new Error(`Unsupported mail driver: ${mailerConfig.driver}`);
|
|
23
70
|
}
|
|
@@ -49,6 +96,10 @@ class MailManager {
|
|
|
49
96
|
return new MailManager(newConfig);
|
|
50
97
|
}
|
|
51
98
|
async send(options) {
|
|
99
|
+
if (options.template && this.templateEngine) {
|
|
100
|
+
const html = await this.templateEngine.renderFile(options.template, options.data);
|
|
101
|
+
options = { ...options, html };
|
|
102
|
+
}
|
|
52
103
|
const provider = this.getProvider();
|
|
53
104
|
return provider.send(options);
|
|
54
105
|
}
|
|
@@ -80,7 +131,43 @@ class MessageBuilder {
|
|
|
80
131
|
this.options.from = from;
|
|
81
132
|
return this;
|
|
82
133
|
}
|
|
83
|
-
|
|
134
|
+
cc(cc) {
|
|
135
|
+
this.options.cc = cc;
|
|
136
|
+
return this;
|
|
137
|
+
}
|
|
138
|
+
bcc(bcc) {
|
|
139
|
+
this.options.bcc = bcc;
|
|
140
|
+
return this;
|
|
141
|
+
}
|
|
142
|
+
replyTo(replyTo) {
|
|
143
|
+
this.options.replyTo = replyTo;
|
|
144
|
+
return this;
|
|
145
|
+
}
|
|
146
|
+
attachments(attachments) {
|
|
147
|
+
this.options.attachments = attachments;
|
|
148
|
+
return this;
|
|
149
|
+
}
|
|
150
|
+
headers(headers) {
|
|
151
|
+
this.options.headers = headers;
|
|
152
|
+
return this;
|
|
153
|
+
}
|
|
154
|
+
template(template) {
|
|
155
|
+
this.options.template = template;
|
|
156
|
+
return this;
|
|
157
|
+
}
|
|
158
|
+
data(data) {
|
|
159
|
+
this.options.data = data;
|
|
160
|
+
return this;
|
|
161
|
+
}
|
|
162
|
+
async send(mailable) {
|
|
163
|
+
if (mailable) {
|
|
164
|
+
mailable.setMailManager(this.manager);
|
|
165
|
+
const mailOptions = mailable.getMailOptions();
|
|
166
|
+
return this.manager.send({
|
|
167
|
+
...mailOptions,
|
|
168
|
+
to: this.options.to,
|
|
169
|
+
});
|
|
170
|
+
}
|
|
84
171
|
if (!this.options.subject) {
|
|
85
172
|
throw new Error('Email subject is required');
|
|
86
173
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MailManager.js","sourceRoot":"","sources":["../../src/core/MailManager.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"MailManager.js","sourceRoot":"","sources":["../../src/core/MailManager.ts"],"names":[],"mappings":";;;AAaA,4DAAyD;AACzD,oEAAiE;AACjE,0DAAuD;AACvD,kEAA+D;AAC/D,gEAA6D;AAC7D,oEAAiE;AAEjE,oEAAiE;AACjE,sDAAmD;AACnD,sDAAmD;AAEnD,MAAa,WAAW;IACd,MAAM,CAAa;IACnB,SAAS,GAA8B,IAAI,GAAG,EAAE,CAAC;IACjD,cAAc,CAAkB;IAExC,YAAY,MAAkB;QAC5B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,wBAAwB,EAAE,CAAC;IAClC,CAAC;IAMO,wBAAwB;QAC9B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YAC3B,OAAO;QACT,CAAC;QAED,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;QAE/E,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO;QACT,CAAC;QAED,MAAM,aAAa,GAA0B;YAC3C,GAAG,CAAC,SAAS,IAAI,EAAE,SAAS,EAAE,CAAC;YAC/B,GAAG,CAAC,SAAS,IAAI,EAAE,SAAS,EAAE,CAAC;YAC/B,GAAG,CAAC,KAAK,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE,CAAC;YACrC,GAAG,CAAC,OAAO,IAAI,EAAE,OAAO,EAAE,CAAC;SAC5B,CAAC;QAEF,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/B,QAAQ,MAAM,EAAE,CAAC;gBACf,KAAK,YAAY;oBACf,IAAI,CAAC,cAAc,GAAG,IAAI,mCAAgB,CAAC,aAAa,CAAC,CAAC;oBAC1D,MAAM;gBACR,KAAK,KAAK;oBACR,IAAI,CAAC,cAAc,GAAG,IAAI,qBAAS,CAAC,aAAa,CAAC,CAAC;oBACnD,MAAM;gBACR,KAAK,KAAK;oBACR,IAAI,CAAC,cAAc,GAAG,IAAI,qBAAS,CAAC,aAAa,CAAC,CAAC;oBACnD,MAAM;gBACR;oBACE,MAAM,IAAI,KAAK,CAAC,gCAAgC,MAAM,EAAE,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC;aAAM,CAAC;YAEN,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC;QAC/B,CAAC;IACH,CAAC;IAMO,cAAc,CAAC,YAA0B;QAC/C,QAAQ,YAAY,CAAC,MAAM,EAAE,CAAC;YAC5B,KAAK,MAAM;gBACT,OAAO,IAAI,2BAAY,CAAC,YAA6C,CAAC,CAAC;YACzE,KAAK,UAAU;gBACb,OAAO,IAAI,mCAAgB,CAAC,YAAiD,CAAC,CAAC;YACjF,KAAK,KAAK;gBACR,OAAO,IAAI,yBAAW,CAAC,YAA4C,CAAC,CAAC;YACvE,KAAK,SAAS;gBACZ,OAAO,IAAI,iCAAe,CAAC,YAAgD,CAAC,CAAC;YAC/E,KAAK,QAAQ;gBACX,OAAO,IAAI,+BAAc,CAAC,YAA+C,CAAC,CAAC;YAC7E,KAAK,UAAU;gBACb,OAAO,IAAI,mCAAgB,CAAC,YAAiD,CAAC,CAAC;YACjF;gBACE,MAAM,IAAI,KAAK,CAAC,4BAA4B,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IAKO,WAAW,CAAC,IAAa;QAC/B,MAAM,UAAU,GAAG,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QAE/C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CAAC,WAAW,UAAU,qBAAqB,CAAC,CAAC;QAC9D,CAAC;QAGD,IAAI,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC9C,IAAI,CAAC,QAAQ,EAAE,CAAC;YAEd,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YACrD,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,MAAM,IAAI,KAAK,CAAC,WAAW,UAAU,2BAA2B,CAAC,CAAC;YACpE,CAAC;YACD,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;YAC7C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC3C,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAKD,EAAE,CAAC,OAA0B;QAC3B,OAAO,IAAI,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IAKD,MAAM,CAAC,IAAY;QACjB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,WAAW,IAAI,qBAAqB,CAAC,CAAC;QACxD,CAAC;QAGD,MAAM,SAAS,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACpD,OAAO,IAAI,WAAW,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;IAKD,KAAK,CAAC,IAAI,CAAC,OAAoB;QAE7B,IAAI,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YAC5C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,CAC/C,OAAO,CAAC,QAAQ,EAChB,OAAO,CAAC,IAAI,CACb,CAAC;YACF,OAAO,GAAG,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,CAAC;QACjC,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACpC,OAAO,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;IAKD,gBAAgB;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;IAC7B,CAAC;CACF;AA/ID,kCA+IC;AAKD,MAAa,cAAc;IAIf;IAHH,OAAO,GAAyB,EAAE,CAAC;IAE1C,YACU,OAAoB,EAC5B,EAAqB;QADb,YAAO,GAAP,OAAO,CAAa;QAG5B,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;IACvB,CAAC;IAED,OAAO,CAAC,OAAe;QACrB,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,IAAY;QACf,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,IAAY;QACf,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,IAAY;QACf,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,EAAE,CAAC,EAAqB;QACtB,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,GAAG,CAAC,GAAsB;QACxB,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CAAC,OAAe;QACrB,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,WAAW,CAAC,WAAyB;QACnC,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CAAC,OAA+B;QACrC,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ,CAAC,QAAgB;QACvB,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,IAA6B;QAChC,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,QAAwC;QAEjD,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACtC,MAAM,WAAW,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC;YAG9C,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;gBACvB,GAAG,WAAW;gBACd,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,EAAG;aACN,CAAC,CAAC;QACpB,CAAC;QAGD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC/C,CAAC;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAsB,CAAC,CAAC;IACxD,CAAC;CACF;AArFD,wCAqFC"}
|
package/dist/core/Mailable.d.ts
CHANGED
|
@@ -1,12 +1,22 @@
|
|
|
1
|
-
import type { MailOptions } from '../types';
|
|
1
|
+
import type { MailOptions, MailResponse } from '../types';
|
|
2
|
+
import type { MailManager } from './MailManager';
|
|
2
3
|
export declare abstract class Mailable {
|
|
3
4
|
protected options: Partial<MailOptions>;
|
|
5
|
+
private recipients;
|
|
6
|
+
private mailManager?;
|
|
4
7
|
abstract build(): this;
|
|
8
|
+
to(recipients: string | string[]): this;
|
|
9
|
+
setMailManager(manager: MailManager): this;
|
|
10
|
+
send(): Promise<MailResponse>;
|
|
5
11
|
protected subject(subject: string): this;
|
|
6
12
|
protected html(html: string): this;
|
|
7
13
|
protected text(text: string): this;
|
|
8
14
|
protected view(template: string, data?: Record<string, unknown>): this;
|
|
9
|
-
protected
|
|
15
|
+
protected cc(cc: string | string[]): this;
|
|
16
|
+
protected bcc(bcc: string | string[]): this;
|
|
17
|
+
protected replyTo(replyTo: string): this;
|
|
18
|
+
protected attach(path: string, filename?: string): this;
|
|
19
|
+
protected withHeaders(headers: Record<string, string>): this;
|
|
10
20
|
getMailOptions(): Partial<MailOptions>;
|
|
11
21
|
}
|
|
12
22
|
//# sourceMappingURL=Mailable.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Mailable.d.ts","sourceRoot":"","sources":["../../src/core/Mailable.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"Mailable.d.ts","sourceRoot":"","sources":["../../src/core/Mailable.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,8BAAsB,QAAQ;IAC5B,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,CAAM;IAC7C,OAAO,CAAC,UAAU,CAAyB;IAC3C,OAAO,CAAC,WAAW,CAAC,CAAc;IAMlC,QAAQ,CAAC,KAAK,IAAI,IAAI;IAKtB,EAAE,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAQvC,cAAc,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAQpC,IAAI,IAAI,OAAO,CAAC,YAAY,CAAC;IAmBnC,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAQxC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAQlC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAQlC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAWtE,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAQzC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAQ3C,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAQxC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAcvD,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IAQ5D,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC;CAIvC"}
|