@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.
Files changed (3) hide show
  1. package/README.md +639 -0
  2. package/bin/index.js +2 -0
  3. 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**