@trovyx/razon 0.0.1
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/README.md +639 -0
- package/bin/index.js +2 -0
- package/package.json +44 -0
package/README.md
ADDED
|
@@ -0,0 +1,639 @@
|
|
|
1
|
+
# Razon - Advanced CLI Email Client
|
|
2
|
+
|
|
3
|
+
A cutting-edge, enterprise-grade email automation platform developed by the **Razon Team**. Razon delivers unparalleled performance for bulk email campaigns, marketing automation, and professional email management with advanced templating, multi-provider support, and intelligent delivery optimization.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
### ๐ **Core Email Engine**
|
|
8
|
+
- **Multi-Provider SMTP Support**: Seamlessly integrate with unlimited SMTP providers including Gmail, Outlook, SendGrid, Mailgun, Amazon SES, and custom servers
|
|
9
|
+
- **Intelligent Failover System**: Automatic provider switching with health monitoring and performance optimization
|
|
10
|
+
- **High-Performance Delivery**: Concurrent email processing with configurable parallel connections for maximum throughput
|
|
11
|
+
- **Smart Rate Limiting**: Advanced throttling with hourly, daily, and per-minute limits to respect provider constraints
|
|
12
|
+
|
|
13
|
+
### ๐ง **Advanced Email Composition**
|
|
14
|
+
- **Dynamic Template Engine**: Powerful HTML templating with 50+ built-in variables and custom tag support
|
|
15
|
+
- **Multi-Format Attachments**: Support for PDF, HTML, Images (PNG/JPG), SVG, and EML files with dynamic generation
|
|
16
|
+
- **Intelligent Content Processing**: Automatic image embedding, CSS inlining, and mobile-responsive optimization
|
|
17
|
+
- **Personalization Engine**: Real-time content customization with fake data generation and company lookup integration
|
|
18
|
+
|
|
19
|
+
### ๐ฏ **Campaign Management**
|
|
20
|
+
- **Bulk Email Processing**: Efficient batch processing with BCC, CC, and TO distribution modes
|
|
21
|
+
- **Test Mode Environment**: Safe testing with isolated recipient lists and comprehensive validation
|
|
22
|
+
- **Campaign Analytics**: Real-time delivery tracking, bounce handling, and performance metrics
|
|
23
|
+
- **Recipient Management**: CSV/TXT file support with advanced parsing and validation
|
|
24
|
+
|
|
25
|
+
### ๐ **Security & Privacy**
|
|
26
|
+
- **Proxy Integration**: Full SOCKS5/HTTP proxy support for enhanced privacy and geographic distribution
|
|
27
|
+
- **Secure Authentication**: OAuth2, API key, and traditional SMTP authentication methods
|
|
28
|
+
- **Encrypted Attachments**: Password-protected PDF generation and secure file handling
|
|
29
|
+
- **Audit Logging**: Comprehensive security logs with configurable retention policies
|
|
30
|
+
|
|
31
|
+
### ๐ **Enterprise Integration**
|
|
32
|
+
- **Outlook Web Access (OWA)**: Native support for Office 365 and Exchange Online accounts
|
|
33
|
+
- **Hunter.io Integration**: Automatic company name resolution and email verification
|
|
34
|
+
- **API-First Design**: RESTful endpoints for seamless integration with existing systems
|
|
35
|
+
- **CLI Interface**: Powerful command-line tools for automation and scripting
|
|
36
|
+
|
|
37
|
+
### ๐ **Monitoring & Analytics**
|
|
38
|
+
- **Real-Time Logging**: Multi-level logging with JSON, text, and structured formats
|
|
39
|
+
- **Performance Metrics**: Delivery rates, response times, and provider performance analytics
|
|
40
|
+
- **Error Handling**: Intelligent retry mechanisms with exponential backoff and dead letter queues
|
|
41
|
+
- **Health Monitoring**: System health checks and automated alerting
|
|
42
|
+
|
|
43
|
+
## Installation
|
|
44
|
+
|
|
45
|
+
### Prerequisites
|
|
46
|
+
- Modern runtime environment
|
|
47
|
+
- Version control system
|
|
48
|
+
- Administrative privileges for installation
|
|
49
|
+
|
|
50
|
+
### Quick Setup
|
|
51
|
+
|
|
52
|
+
1. **Clone the Razon repository**:
|
|
53
|
+
```bash
|
|
54
|
+
git clone <repository-url>
|
|
55
|
+
cd razon-email-client
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
2. **Install dependencies**:
|
|
59
|
+
```bash
|
|
60
|
+
# Install required dependencies
|
|
61
|
+
npm install
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
3. **Initialize configuration**:
|
|
65
|
+
```bash
|
|
66
|
+
# Copy example configurations
|
|
67
|
+
cp config/core.jsonc.example config/core.jsonc
|
|
68
|
+
cp config/smtp.jsonc.example config/smtp.jsonc
|
|
69
|
+
cp config/message.jsonc.example config/message.jsonc
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
4. **Build the project**:
|
|
73
|
+
```bash
|
|
74
|
+
# Build the application
|
|
75
|
+
npm run build
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### Docker Installation (Alternative)
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
# Pull the official Razon image
|
|
82
|
+
docker pull razon/email-client:latest
|
|
83
|
+
|
|
84
|
+
# Run with volume mounting for configuration
|
|
85
|
+
docker run -v $(pwd)/config:/app/config razon/email-client:latest
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## Quick Start
|
|
89
|
+
|
|
90
|
+
### ๐ฏ **Getting Started in 5 Minutes**
|
|
91
|
+
|
|
92
|
+
1. **Configure Your Email Provider**:
|
|
93
|
+
Edit `config/smtp.jsonc` with your SMTP server credentials:
|
|
94
|
+
```bash
|
|
95
|
+
# Configure your email provider settings
|
|
96
|
+
nano config/smtp.jsonc
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
2. **Design Your Email Campaign**:
|
|
100
|
+
Configure `config/message.jsonc` with your email content and templates:
|
|
101
|
+
```bash
|
|
102
|
+
# Set up your email template and content
|
|
103
|
+
nano config/message.jsonc
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
3. **Prepare Your Recipient List**:
|
|
107
|
+
Create a recipient file with email addresses:
|
|
108
|
+
```bash
|
|
109
|
+
# Create recipients file (supports .txt and .csv)
|
|
110
|
+
echo "recipient1@example.com" > recipients.txt
|
|
111
|
+
echo "recipient2@example.com" >> recipients.txt
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
4. **Launch Your Campaign**:
|
|
115
|
+
```bash
|
|
116
|
+
# Start Razon CLI
|
|
117
|
+
npm start
|
|
118
|
+
|
|
119
|
+
# Or run in test mode first
|
|
120
|
+
npm run test-mode
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### ๐งช **Test Mode (Recommended for First Run)**
|
|
124
|
+
|
|
125
|
+
Before sending to real recipients, always test your configuration:
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
# Enable test mode in config/core.jsonc
|
|
129
|
+
{
|
|
130
|
+
"enableTestMode": true,
|
|
131
|
+
"testLeadsFile": "test-recipients.txt",
|
|
132
|
+
"testLeadsLimit": 5
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
# Create test recipients
|
|
136
|
+
echo "test@yourdomain.com" > test-recipients.txt
|
|
137
|
+
|
|
138
|
+
# Run test campaign
|
|
139
|
+
npm run test
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
### ๐ **Monitor Your Campaign**
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
# View real-time logs
|
|
146
|
+
tail -f mailer.log
|
|
147
|
+
|
|
148
|
+
# Check delivery status
|
|
149
|
+
npm run status
|
|
150
|
+
|
|
151
|
+
# View campaign analytics
|
|
152
|
+
npm run analytics
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
## Configuration
|
|
156
|
+
|
|
157
|
+
Razon uses a modular JSONC configuration system that provides maximum flexibility and maintainability. All configuration files are located in the `config/` directory and support comments for better documentation.
|
|
158
|
+
|
|
159
|
+
### ๐ **Configuration Structure**
|
|
160
|
+
|
|
161
|
+
```
|
|
162
|
+
config/
|
|
163
|
+
โโโ core.jsonc # Core application settings and global preferences
|
|
164
|
+
โโโ smtp.jsonc # SMTP server configurations and provider settings
|
|
165
|
+
โโโ message.jsonc # Email message templates and content settings
|
|
166
|
+
โโโ attachments.jsonc # Attachment configurations and processing rules
|
|
167
|
+
โโโ addon/
|
|
168
|
+
โ โโโ owa.jsonc # Outlook Web Access integration settings
|
|
169
|
+
โโโ eml/
|
|
170
|
+
โโโ attachments.jsonc # EML-specific attachment configurations
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
### โ๏ธ **Core Configuration (`config/core.jsonc`)**
|
|
174
|
+
|
|
175
|
+
The central configuration file that controls Razon's core functionality and global behavior:
|
|
176
|
+
|
|
177
|
+
```json
|
|
178
|
+
{
|
|
179
|
+
"name": "Razon Advanced Email Client",
|
|
180
|
+
"enableTestMode": false,
|
|
181
|
+
"testLeadsFile": "test-leads.txt",
|
|
182
|
+
"testLeadsLimit": 5,
|
|
183
|
+
"useBulkSending": false,
|
|
184
|
+
"bulkSending": {
|
|
185
|
+
"batchSize": 50,
|
|
186
|
+
"useBccForSending": true,
|
|
187
|
+
"useCcForSending": false,
|
|
188
|
+
"useToForSending": false
|
|
189
|
+
},
|
|
190
|
+
"enableSleepBetweenEmails": false,
|
|
191
|
+
"delayDurationInSeconds": 10,
|
|
192
|
+
"emailsBeforeSleep": 1000,
|
|
193
|
+
"randomizeEmailServers": true,
|
|
194
|
+
"proxy": {
|
|
195
|
+
"useProxy": false,
|
|
196
|
+
"host": "localhost",
|
|
197
|
+
"port": 8080,
|
|
198
|
+
"user": "user",
|
|
199
|
+
"pass": "pass",
|
|
200
|
+
"protocol": "socks5",
|
|
201
|
+
"useAuthentication": false
|
|
202
|
+
},
|
|
203
|
+
"parallel": {
|
|
204
|
+
"parallelConnections": 10,
|
|
205
|
+
"enableParallelSending": true
|
|
206
|
+
},
|
|
207
|
+
"logging": {
|
|
208
|
+
"enabled": true,
|
|
209
|
+
"level": "info",
|
|
210
|
+
"logFile": "mailer.log",
|
|
211
|
+
"format": "text",
|
|
212
|
+
"logFailed": true,
|
|
213
|
+
"logSuccess": true
|
|
214
|
+
},
|
|
215
|
+
"HUNTER_API_KEY": [
|
|
216
|
+
"your-hunter-api-key"
|
|
217
|
+
]
|
|
218
|
+
}
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
### ๐ง **SMTP Configuration (`config/smtp.jsonc`)**
|
|
222
|
+
|
|
223
|
+
Configure multiple email providers with intelligent load balancing and failover capabilities:
|
|
224
|
+
|
|
225
|
+
```json
|
|
226
|
+
{
|
|
227
|
+
"randomizeEmailServers": true,
|
|
228
|
+
"accounts": [
|
|
229
|
+
{
|
|
230
|
+
"useMe": true,
|
|
231
|
+
"host": "smtp.resend.com",
|
|
232
|
+
"port": 587,
|
|
233
|
+
"secure": false,
|
|
234
|
+
"user": "resend",
|
|
235
|
+
"pass": "your-api-key",
|
|
236
|
+
"fromEmail": "campaigns@yourdomain.com",
|
|
237
|
+
"fromName": "Your Campaign Name",
|
|
238
|
+
"useAuth": true,
|
|
239
|
+
"dailyLimit": 10000,
|
|
240
|
+
"retryFailed": false,
|
|
241
|
+
"retryCount": 2,
|
|
242
|
+
"useProxy": false,
|
|
243
|
+
"options": {
|
|
244
|
+
"enableHourlyLimit": false,
|
|
245
|
+
"sendPerHour": 100,
|
|
246
|
+
"enableMinuteLimit": false,
|
|
247
|
+
"sendPer10Minutes": 10
|
|
248
|
+
},
|
|
249
|
+
"advance": {
|
|
250
|
+
"pool": false,
|
|
251
|
+
"maxConnections": 5,
|
|
252
|
+
"maxMessages": 100
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
]
|
|
256
|
+
}
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
### ๐ **Message Configuration (`config/message.jsonc`)**
|
|
260
|
+
|
|
261
|
+
Design sophisticated email campaigns with dynamic content and advanced personalization:
|
|
262
|
+
|
|
263
|
+
```json
|
|
264
|
+
{
|
|
265
|
+
"subject": "Your Personalized Campaign Subject",
|
|
266
|
+
"fromEmail": "campaigns@yourdomain.com",
|
|
267
|
+
"priority": "normal",
|
|
268
|
+
"fromName": "",
|
|
269
|
+
"yourLinks": [],
|
|
270
|
+
"linksFromFile": "../links.txt",
|
|
271
|
+
"useLinkFromFile": false,
|
|
272
|
+
"subjects": {
|
|
273
|
+
"enabled": false,
|
|
274
|
+
"subjectsPath": "subject.txt",
|
|
275
|
+
"offset": 0,
|
|
276
|
+
"mode": "sequence",
|
|
277
|
+
"countBeforeSubject": 500,
|
|
278
|
+
"startFresh": false
|
|
279
|
+
},
|
|
280
|
+
"fromNames": {
|
|
281
|
+
"enabled": false,
|
|
282
|
+
"namesPath": "from-names.txt",
|
|
283
|
+
"offset": 0,
|
|
284
|
+
"mode": "sequence",
|
|
285
|
+
"countBeforeName": 500,
|
|
286
|
+
"startFresh": false
|
|
287
|
+
},
|
|
288
|
+
"recipient_file": "recipients.txt",
|
|
289
|
+
"body": {
|
|
290
|
+
"useHTML": true,
|
|
291
|
+
"latterPath": "letter.html",
|
|
292
|
+
"image": {
|
|
293
|
+
"embedInLetter": false,
|
|
294
|
+
"imagePath": "image.png",
|
|
295
|
+
"alt": "Campaign Image",
|
|
296
|
+
"strictMode": true,
|
|
297
|
+
"style": {
|
|
298
|
+
"useStyle": false,
|
|
299
|
+
"width": "100%",
|
|
300
|
+
"height": "100%",
|
|
301
|
+
"marginTop": "0px",
|
|
302
|
+
"marginBottom": "0px",
|
|
303
|
+
"marginLeft": "0px",
|
|
304
|
+
"marginRight": "0px",
|
|
305
|
+
"paddingTop": "0px",
|
|
306
|
+
"paddingBottom": "0px",
|
|
307
|
+
"paddingLeft": "0px",
|
|
308
|
+
"paddingRight": "0px",
|
|
309
|
+
"borderRadius": "0px"
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
```
|
|
315
|
+
|
|
316
|
+
# Calendar Invites (Production)
|
|
317
|
+
|
|
318
|
+
Use this guide to attach calendar invites to your emails so recipients can add events directly to their calendars. Supports Microsoft Teams, Google Meet, Zoom, and a generic standard format.
|
|
319
|
+
|
|
320
|
+
## Scope
|
|
321
|
+
- Single-recipient sending with SMTP mode only
|
|
322
|
+
- Either attach an existing `.ics` file or generate one dynamically from configuration
|
|
323
|
+
- ICS stores times in UTC; email body displays times using the configured timezone
|
|
324
|
+
|
|
325
|
+
## Requirements
|
|
326
|
+
- Single-recipient send flow enabled
|
|
327
|
+
- Valid meeting links for your chosen platform
|
|
328
|
+
- `.ics` file (if using an existing invite)
|
|
329
|
+
- Optional `.txt` file for description content
|
|
330
|
+
|
|
331
|
+
## Configuration
|
|
332
|
+
Place a `calendar` block in your message configuration. Tags are supported for dynamic values:
|
|
333
|
+
- `@from` uses the senderโs email or name
|
|
334
|
+
- `@to` uses the recipientโs email (not valid in batch mode)
|
|
335
|
+
- `@email` uses the attendeeโs email as display name
|
|
336
|
+
|
|
337
|
+
```jsonc
|
|
338
|
+
{
|
|
339
|
+
"calendar": {
|
|
340
|
+
"use": true,
|
|
341
|
+
"icsPath": "../tmp/meeting.ics",
|
|
342
|
+
"useIcsPath": false,
|
|
343
|
+
"useMainMessageBody": false,
|
|
344
|
+
|
|
345
|
+
// Required
|
|
346
|
+
"organizerEmail": "@from",
|
|
347
|
+
"attendeeEmail": "@to",
|
|
348
|
+
"start": "now",
|
|
349
|
+
"end": "+1hours",
|
|
350
|
+
|
|
351
|
+
// Optional
|
|
352
|
+
"type": "teams", // "teams" | "google" | "zoom" | "standard"
|
|
353
|
+
"appName": "mister-man", // UID suffix; default "razon" when empty
|
|
354
|
+
"title": "Project Kickoff",
|
|
355
|
+
"organizerName": "@from",
|
|
356
|
+
"attendeeName": "@email",
|
|
357
|
+
|
|
358
|
+
// Platform-specific links
|
|
359
|
+
"teamsLink": "https://teams.microsoft.com/l/meetup-join/...",
|
|
360
|
+
"googleLink": "https://meet.google.com/abc-defg-hij",
|
|
361
|
+
"zoomLink": "https://zoom.us/j/1234567890",
|
|
362
|
+
"zoomMeetingId": "123 456 7890",
|
|
363
|
+
"zoomPasscode": "",
|
|
364
|
+
|
|
365
|
+
// Fallback/metadata
|
|
366
|
+
"location": "HQ Boardroom", // default "Online" when empty
|
|
367
|
+
"importance": "high", // "high" | "normal"
|
|
368
|
+
"description": "Agenda:\n- Intro\n- Timeline\n- Next steps",
|
|
369
|
+
"descriptionPath": "../tmp/description.txt",
|
|
370
|
+
"useDescriptionPath": false,
|
|
371
|
+
"timezone": "Africa/Lagos" // pretty HTML timezone; default "UTC" when empty
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
```
|
|
375
|
+
|
|
376
|
+
## Key Behaviors
|
|
377
|
+
- Enable with `use: true` in single-recipient SMTP mode
|
|
378
|
+
- Use an existing `.ics` by setting `useIcsPath: true` and `icsPath` to your file; other calendar fields are ignored
|
|
379
|
+
- `useMainMessageBody: true` uses your main email body as the calendar description (auto-enabled when `useIcsPath` is true)
|
|
380
|
+
- Time inputs for `start` and `end`:
|
|
381
|
+
- `"now"`
|
|
382
|
+
- Relative time like `"+30minutes"`, `"+2hours"`, `"-3days"`, `"+1week"`, `"+1month"`, `"+1year"`
|
|
383
|
+
- `attendeeName`:
|
|
384
|
+
- Empty โ `"Attendee"`
|
|
385
|
+
- `@email` โ attendee email becomes the display name
|
|
386
|
+
- `importance`:
|
|
387
|
+
- `"high"` highlights priority in some clients
|
|
388
|
+
- `"normal"` standard priority
|
|
389
|
+
- `location` defaults to `"Online"` if not provided
|
|
390
|
+
- `timezone` formats human-readable times in the email body; ICS stays in UTC
|
|
391
|
+
|
|
392
|
+
## Platform Notes
|
|
393
|
+
- Microsoft Teams
|
|
394
|
+
- Provide a valid Teams link; recipients can use the โJoin your Teams meetingโ flow from the email
|
|
395
|
+
- Google Meet
|
|
396
|
+
- Use the `https://meet.google.com/xxx-yyyy-zzz` format
|
|
397
|
+
- Guests must be invited or admitted by the host
|
|
398
|
+
- Zoom
|
|
399
|
+
- Browsers may prompt to open the Zoom app
|
|
400
|
+
- Recipients can join via the Zoom Workplace app or the web if prompts donโt appear
|
|
401
|
+
|
|
402
|
+
## Operational Tips
|
|
403
|
+
- Prefer dynamic generation when you need consistent formatting and platform-specific buttons in the email body
|
|
404
|
+
- Prefer `useIcsPath` when integrating with external scheduling systems that already provide `.ics`
|
|
405
|
+
- In non-batch sending, `@to` simplifies attendee assignment
|
|
406
|
+
- Keep meeting IDs and passcodes out of logs; treat them as sensitive
|
|
407
|
+
```
|
|
408
|
+
|
|
409
|
+
### ๐ **Attachment Configuration (`config/attachments.jsonc`)**
|
|
410
|
+
|
|
411
|
+
Configure sophisticated file attachments with dynamic generation and multi-format support:
|
|
412
|
+
|
|
413
|
+
```json
|
|
414
|
+
{
|
|
415
|
+
"useAttachment": true,
|
|
416
|
+
"throwErrorOnInvalidAttachment": true,
|
|
417
|
+
"replaceTagsInAttachment": true,
|
|
418
|
+
"attachments": [{
|
|
419
|
+
"useMe": true,
|
|
420
|
+
"format": "PDF",
|
|
421
|
+
"attachmentPath": "letterAttachment.html",
|
|
422
|
+
"attachmentNameWithPlaceholders": "Document_{UNIQUE_ID}.pdf",
|
|
423
|
+
"pdf": {
|
|
424
|
+
"usePassword": false,
|
|
425
|
+
"password": "secret",
|
|
426
|
+
"inlineAttachment": false,
|
|
427
|
+
"landscape": false,
|
|
428
|
+
"printBackground": true,
|
|
429
|
+
"format": "A4",
|
|
430
|
+
"margin": {
|
|
431
|
+
"top": 1,
|
|
432
|
+
"left": 1,
|
|
433
|
+
"bottom": 1,
|
|
434
|
+
"right": 1
|
|
435
|
+
}
|
|
436
|
+
},
|
|
437
|
+
"image": {
|
|
438
|
+
"inlineAttachment": false,
|
|
439
|
+
"type": "jpeg",
|
|
440
|
+
"format": "A4",
|
|
441
|
+
"landscape": true,
|
|
442
|
+
"margin": {
|
|
443
|
+
"top": 0,
|
|
444
|
+
"left": 0,
|
|
445
|
+
"bottom": 0,
|
|
446
|
+
"right": 0
|
|
447
|
+
},
|
|
448
|
+
"printBackground": true,
|
|
449
|
+
"fitToPaperMode": "Default",
|
|
450
|
+
"optimizeForSpeed": true,
|
|
451
|
+
"quality": 80
|
|
452
|
+
},
|
|
453
|
+
"eml": {
|
|
454
|
+
"useMessageConfig": true,
|
|
455
|
+
"fromEmail": "campaigns@yourdomain.com",
|
|
456
|
+
"fromName": "Campaign Team",
|
|
457
|
+
"subject": "Attached Email Message",
|
|
458
|
+
"priority": "normal",
|
|
459
|
+
"attachment": {
|
|
460
|
+
"useAttachment": false,
|
|
461
|
+
"throwErrorOnInvalidAttachment": false
|
|
462
|
+
},
|
|
463
|
+
"headers": {
|
|
464
|
+
"X-Mailer": "Razon Email Client"
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
}]
|
|
468
|
+
}
|
|
469
|
+
```
|
|
470
|
+
|
|
471
|
+
### ๐ **OWA Configuration (`config/addon/owa.jsonc`)**
|
|
472
|
+
|
|
473
|
+
Configure Outlook Web Access integration for seamless Office 365 and Exchange Online email sending:
|
|
474
|
+
|
|
475
|
+
```json
|
|
476
|
+
{
|
|
477
|
+
"randomizeEmailServers": true,
|
|
478
|
+
"accounts": [{
|
|
479
|
+
"useMe": false,
|
|
480
|
+
"senderEmail": "your-email@company.com",
|
|
481
|
+
"webmail_url": "https://outlook.office.com/mail/",
|
|
482
|
+
"cookie_string": "your-session-cookies",
|
|
483
|
+
"deleteOnSent": true,
|
|
484
|
+
"dailyLimit": 10000,
|
|
485
|
+
"retryFailed": false,
|
|
486
|
+
"retryCount": 2,
|
|
487
|
+
"useProxy": false,
|
|
488
|
+
"options": {
|
|
489
|
+
"enableHourlyLimit": false,
|
|
490
|
+
"sendPerHour": 100,
|
|
491
|
+
"enableMinuteLimit": false,
|
|
492
|
+
"sendPer10Minutes": 10
|
|
493
|
+
}
|
|
494
|
+
}]
|
|
495
|
+
}
|
|
496
|
+
```
|
|
497
|
+
|
|
498
|
+
#### **OWA Integration Features:**
|
|
499
|
+
- **Native Office 365 Support**: Direct integration with Microsoft Outlook Web Access
|
|
500
|
+
- **Session Management**: Automatic cookie handling and session persistence
|
|
501
|
+
- **Enterprise Security**: Maintains corporate security policies and compliance
|
|
502
|
+
- **Bulk Operations**: Efficient handling of large-scale email campaigns
|
|
503
|
+
- **Rate Limiting**: Respects Exchange Online throttling policies
|
|
504
|
+
- **Auto-cleanup**: Optional sent item deletion for storage management
|
|
505
|
+
|
|
506
|
+
#### **Setting Up OWA Integration:**
|
|
507
|
+
1. **Obtain Session Cookies**: Login to your Outlook Web Access and extract session cookies
|
|
508
|
+
2. **Configure Account**: Add your corporate email and webmail URL
|
|
509
|
+
3. **Set Limits**: Configure daily and hourly sending limits per your organization's policies
|
|
510
|
+
4. **Test Connection**: Verify connectivity before launching campaigns
|
|
511
|
+
|
|
512
|
+
## Template System
|
|
513
|
+
|
|
514
|
+
### HTML Templates
|
|
515
|
+
|
|
516
|
+
Create rich HTML email templates with dynamic content:
|
|
517
|
+
|
|
518
|
+
```html
|
|
519
|
+
<!DOCTYPE html>
|
|
520
|
+
<html>
|
|
521
|
+
<head>
|
|
522
|
+
<meta charset="UTF-8">
|
|
523
|
+
<title>{SUBJECT}</title>
|
|
524
|
+
<style>
|
|
525
|
+
body { font-family: Arial, sans-serif; }
|
|
526
|
+
.header { background-color: #f0f0f0; padding: 20px; }
|
|
527
|
+
.content { padding: 20px; }
|
|
528
|
+
.footer { background-color: #333; color: white; padding: 10px; }
|
|
529
|
+
</style>
|
|
530
|
+
</head>
|
|
531
|
+
<body>
|
|
532
|
+
<div class="header">
|
|
533
|
+
<h1>Welcome {FAKE_FIRST_NAME}!</h1>
|
|
534
|
+
</div>
|
|
535
|
+
|
|
536
|
+
<div class="content">
|
|
537
|
+
<p>Dear {FAKE_FIRST_NAME} {FAKE_LAST_NAME},</p>
|
|
538
|
+
|
|
539
|
+
<p>Thank you for your interest in our services. This email was sent on {DATE} at {TIME}.</p>
|
|
540
|
+
|
|
541
|
+
<p>Your unique reference ID is: <strong>{UNIQUE_ID}</strong></p>
|
|
542
|
+
|
|
543
|
+
<p>Company: {FAKE_COMPANY_NAME}</p>
|
|
544
|
+
<p>Phone: {FAKE_PHONE_NUMBER}</p>
|
|
545
|
+
<p>Address: {FAKE_ADDRESS}</p>
|
|
546
|
+
|
|
547
|
+
<a href="{PAGE_LINK}" style="background-color: #007cba; color: white; padding: 10px 20px; text-decoration: none; border-radius: 5px;">
|
|
548
|
+
Visit Our Website
|
|
549
|
+
</a>
|
|
550
|
+
</div>
|
|
551
|
+
|
|
552
|
+
<div class="footer">
|
|
553
|
+
<p>ยฉ 2024 Your Company. All rights reserved.</p>
|
|
554
|
+
<p>Random Number: {RANDOM_NUMBER_5}</p>
|
|
555
|
+
</div>
|
|
556
|
+
</body>
|
|
557
|
+
</html>
|
|
558
|
+
```
|
|
559
|
+
|
|
560
|
+
## Tag System
|
|
561
|
+
|
|
562
|
+
The application includes a powerful tag replacement system with 50+ built-in tags for dynamic content generation.
|
|
563
|
+
|
|
564
|
+
### Basic Tags
|
|
565
|
+
|
|
566
|
+
| Tag | Description | Example Output |
|
|
567
|
+
|-----|-------------|----------------|
|
|
568
|
+
| `{EMAIL_ADDRESS}` | Recipient's email address | `john.doe@example.com` |
|
|
569
|
+
| `{UNIQUE_ID}` | Unique identifier | `abc123def456` |
|
|
570
|
+
| `{DATE}` | Current date | `2024-01-15` |
|
|
571
|
+
| `{TIME}` | Current time | `14:30:25` |
|
|
572
|
+
| `{TOMORROW_DATE}` | Tomorrow's date | `2024-01-16` |
|
|
573
|
+
| `{YESTERDAY_DATE}` | Yesterday's date | `2024-01-14` |
|
|
574
|
+
|
|
575
|
+
### Fake Data Tags
|
|
576
|
+
|
|
577
|
+
| Tag | Description | Example Output |
|
|
578
|
+
|-----|-------------|----------------|
|
|
579
|
+
| `{FAKE_FIRST_NAME}` | Random first name | `John` |
|
|
580
|
+
| `{FAKE_LAST_NAME}` | Random last name | `Smith` |
|
|
581
|
+
| `{FAKE_FULL_NAME}` | Random full name | `John Smith` |
|
|
582
|
+
| `{FAKE_COMPANY_NAME}` | Random company name | `Tech Solutions Inc` |
|
|
583
|
+
| `{FAKE_EMAIL}` | Random email address | `john.smith@example.com` |
|
|
584
|
+
| `{FAKE_PHONE_NUMBER}` | Random phone number | `+1-555-123-4567` |
|
|
585
|
+
| `{FAKE_ADDRESS}` | Random street address | `123 Main Street` |
|
|
586
|
+
| `{FAKE_CITY}` | Random city name | `New York` |
|
|
587
|
+
| `{FAKE_STATE}` | Random state name | `California` |
|
|
588
|
+
| `{FAKE_ZIP_CODE}` | Random ZIP code | `90210` |
|
|
589
|
+
| `{FAKE_COUNTRY}` | Random country name | `United States` |
|
|
590
|
+
|
|
591
|
+
### Random Number Tags
|
|
592
|
+
|
|
593
|
+
| Tag | Description | Example Output |
|
|
594
|
+
|-----|-------------|----------------|
|
|
595
|
+
| `{RANDOM_NUMBER_3}` | 3-digit random number | `847` |
|
|
596
|
+
| `{RANDOM_NUMBER_5}` | 5-digit random number | `92847` |
|
|
597
|
+
| `{RANDOM_NUMBER_8}` | 8-digit random number | `38472951` |
|
|
598
|
+
|
|
599
|
+
### Special Tags
|
|
600
|
+
|
|
601
|
+
| Tag | Description | Example Output |
|
|
602
|
+
|-----|-------------|----------------|
|
|
603
|
+
| `{PAGE_LINK}` | Dynamic page link | `https://example.com` |
|
|
604
|
+
| `{REAL_COMPANY_NAME}` | Real company from domain | `Google Inc` |
|
|
605
|
+
|
|
606
|
+
## Best Practices
|
|
607
|
+
|
|
608
|
+
### 1. SMTP Security
|
|
609
|
+
- Use environment variables for sensitive credentials
|
|
610
|
+
- Enable two-factor authentication where possible
|
|
611
|
+
- Regularly rotate passwords and API keys
|
|
612
|
+
|
|
613
|
+
### 2. Rate Limiting
|
|
614
|
+
- Monitor your SMTP provider's rate limits
|
|
615
|
+
- Configure appropriate delays between emails
|
|
616
|
+
- Use multiple SMTP accounts for load balancing
|
|
617
|
+
|
|
618
|
+
### 3. Content Management
|
|
619
|
+
- Test email templates in multiple clients
|
|
620
|
+
- Use inline CSS for better compatibility
|
|
621
|
+
- Optimize images to keep email size manageable
|
|
622
|
+
|
|
623
|
+
### 4. Attachment Management
|
|
624
|
+
- Limit attachment size and number
|
|
625
|
+
- Use cloud storage links for large files
|
|
626
|
+
- Encrypt sensitive attachments when necessary
|
|
627
|
+
|
|
628
|
+
### 5. Logging and Monitoring
|
|
629
|
+
- Enable comprehensive logging for troubleshooting
|
|
630
|
+
- Monitor logs for delivery failures
|
|
631
|
+
- Implement log rotation to manage disk usage
|
|
632
|
+
|
|
633
|
+
## License
|
|
634
|
+
|
|
635
|
+
MIT License - Feel free to use this project in your own applications, both personal and commercial.
|
|
636
|
+
|
|
637
|
+
---
|
|
638
|
+
|
|
639
|
+
**Made with โค๏ธ by Razon Team**
|