strapi-plugin-magic-mail 2.0.0 → 2.0.2
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 +11 -36
- package/admin/src/pages/EmailDesigner/EditorPage.jsx +11 -2
- package/dist/_chunks/{App-CClpsmQH.js → App-DF9vAGXX.js} +24 -3
- package/dist/_chunks/{App-DQpXIAmV.mjs → App-DYNCyt54.mjs} +6 -2
- package/dist/admin/index.js +1 -1
- package/dist/admin/index.mjs +1 -1
- package/dist/server/index.js +1 -1
- package/dist/server/index.mjs +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -230,11 +230,12 @@ await strapi.plugin('magic-mail').service('email-router').send({
|
|
|
230
230
|
|
|
231
231
|
| Feature | FREE | PREMIUM | ADVANCED | ENTERPRISE |
|
|
232
232
|
|---------|------|---------|----------|------------|
|
|
233
|
-
| **Visual Designer** | ✅
|
|
234
|
-
| **
|
|
235
|
-
| **Mustache
|
|
236
|
-
| **
|
|
237
|
-
| **
|
|
233
|
+
| **Visual Designer** | ✅ Basic builder | ✅ + template library | ✅ Pro components | ✅ Enterprise suite |
|
|
234
|
+
| **Templates Included** | 25 | 100 | 500 | Unlimited |
|
|
235
|
+
| **Drag & Drop + Mustache** | ✅ | ✅ | ✅ | ✅ |
|
|
236
|
+
| **Import / Export** | ✅ | ✅ | ✅ | ✅ |
|
|
237
|
+
| **Template Versioning** | ❌ | ✅ | ✅ | ✅ |
|
|
238
|
+
| **Analytics** | ❌ | Basic insights | Advanced dashboard | Enterprise analytics |
|
|
238
239
|
| **Custom Blocks** | ❌ | ❌ | ❌ | ✅ |
|
|
239
240
|
| **Team Library** | ❌ | ❌ | ❌ | ✅ |
|
|
240
241
|
| **A/B Testing** | ❌ | ❌ | ❌ | ✅ |
|
|
@@ -1372,33 +1373,7 @@ We welcome contributions!
|
|
|
1372
1373
|
|
|
1373
1374
|
---
|
|
1374
1375
|
|
|
1375
|
-
##
|
|
1376
|
-
|
|
1377
|
-
### v1.0.0 (2025-11-13)
|
|
1378
|
-
|
|
1379
|
-
**Initial Release** 🎉
|
|
1380
|
-
|
|
1381
|
-
**Features:**
|
|
1382
|
-
- ✅ 6 Email Providers (Gmail, Microsoft, Yahoo OAuth + SMTP, SendGrid, Mailgun)
|
|
1383
|
-
- ✅ OAuth 2.0 Support (Gmail, Microsoft 365, Yahoo Mail)
|
|
1384
|
-
- ✅ Smart Routing Rules Engine
|
|
1385
|
-
- ✅ Automatic Failover & Rate Limiting
|
|
1386
|
-
- ✅ Beautiful Admin UI with Heroicons
|
|
1387
|
-
- ✅ Email Analytics Dashboard
|
|
1388
|
-
- ✅ Strapi Email Service Override (Email Designer compatible)
|
|
1389
|
-
- ✅ Comprehensive Security (TLS 1.2+, DKIM, SPF, DMARC)
|
|
1390
|
-
- ✅ GDPR/CAN-SPAM Compliance
|
|
1391
|
-
- ✅ Test Features (Direct & Strapi Service)
|
|
1392
|
-
- ✅ Encrypted Credential Storage (AES-256-GCM)
|
|
1393
|
-
- ✅ Attachment Support (all providers)
|
|
1394
|
-
- ✅ Priority Email Headers
|
|
1395
|
-
- ✅ List-Unsubscribe Headers
|
|
1396
|
-
- ✅ Security Validation
|
|
1397
|
-
- ✅ Hourly/Daily Counter Resets
|
|
1398
|
-
|
|
1399
|
-
---
|
|
1400
|
-
|
|
1401
|
-
## 📄 License
|
|
1376
|
+
## License
|
|
1402
1377
|
|
|
1403
1378
|
**MIT License**
|
|
1404
1379
|
|
|
@@ -1433,9 +1408,9 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
|
|
|
1433
1408
|
## 💬 Support
|
|
1434
1409
|
|
|
1435
1410
|
**Need help?**
|
|
1436
|
-
- 📖 [Documentation](https://github.com/Schero94/
|
|
1437
|
-
- 🐛 [Report Issues](https://github.com/Schero94/
|
|
1438
|
-
- 💡 [Feature Requests](https://github.com/Schero94/
|
|
1411
|
+
- 📖 [Documentation](https://github.com/Schero94/Magic-Mail#readme)
|
|
1412
|
+
- 🐛 [Report Issues](https://github.com/Schero94/Magic-Mail/issues)
|
|
1413
|
+
- 💡 [Feature Requests](https://github.com/Schero94/Magic-Mail/discussions)
|
|
1439
1414
|
|
|
1440
1415
|
|
|
1441
1416
|
---
|
|
@@ -1443,7 +1418,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
|
|
|
1443
1418
|
## ⭐ Show Your Support
|
|
1444
1419
|
|
|
1445
1420
|
If MagicMail helps your project, please:
|
|
1446
|
-
- ⭐ Star the repo on [GitHub](https://github.com/Schero94/
|
|
1421
|
+
- ⭐ Star the repo on [GitHub](https://github.com/Schero94/Magic-Mail)
|
|
1447
1422
|
- 📢 Share with your team
|
|
1448
1423
|
- 🐦 Tweet about it
|
|
1449
1424
|
|
|
@@ -26,7 +26,16 @@ import {
|
|
|
26
26
|
CodeBracketIcon,
|
|
27
27
|
} from '@heroicons/react/24/outline';
|
|
28
28
|
import { useLicense } from '../../hooks/useLicense';
|
|
29
|
-
import
|
|
29
|
+
import * as ReactEmailEditor from 'react-email-editor';
|
|
30
|
+
|
|
31
|
+
const EmailEditorComponent =
|
|
32
|
+
ReactEmailEditor.EmailEditor ||
|
|
33
|
+
ReactEmailEditor.default ||
|
|
34
|
+
ReactEmailEditor;
|
|
35
|
+
|
|
36
|
+
if (!EmailEditorComponent) {
|
|
37
|
+
console.error('[MagicMail] Failed to resolve EmailEditor component export', ReactEmailEditor);
|
|
38
|
+
}
|
|
30
39
|
|
|
31
40
|
// Standard Email Template for Core Emails (when no design exists)
|
|
32
41
|
const STANDARD_EMAIL_TEMPLATE = {
|
|
@@ -1118,7 +1127,7 @@ const EditorPage = () => {
|
|
|
1118
1127
|
pointerEvents: editorLoaded ? 'auto' : 'none',
|
|
1119
1128
|
}}
|
|
1120
1129
|
>
|
|
1121
|
-
<
|
|
1130
|
+
<EmailEditorComponent
|
|
1122
1131
|
ref={emailEditorRef}
|
|
1123
1132
|
onReady={onEditorReady}
|
|
1124
1133
|
minHeight="calc(100vh - 240px)"
|
|
@@ -8,11 +8,28 @@ const outline = require("@heroicons/react/24/outline");
|
|
|
8
8
|
const admin = require("@strapi/strapi/admin");
|
|
9
9
|
const styled = require("styled-components");
|
|
10
10
|
const icons = require("@strapi/icons");
|
|
11
|
-
const
|
|
11
|
+
const ReactEmailEditor = require("react-email-editor");
|
|
12
12
|
const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
|
|
13
|
+
function _interopNamespace(e) {
|
|
14
|
+
if (e && e.__esModule) return e;
|
|
15
|
+
const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
|
|
16
|
+
if (e) {
|
|
17
|
+
for (const k in e) {
|
|
18
|
+
if (k !== "default") {
|
|
19
|
+
const d = Object.getOwnPropertyDescriptor(e, k);
|
|
20
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
21
|
+
enumerable: true,
|
|
22
|
+
get: () => e[k]
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
n.default = e;
|
|
28
|
+
return Object.freeze(n);
|
|
29
|
+
}
|
|
13
30
|
const React__default = /* @__PURE__ */ _interopDefault(React);
|
|
14
31
|
const styled__default = /* @__PURE__ */ _interopDefault(styled);
|
|
15
|
-
const
|
|
32
|
+
const ReactEmailEditor__namespace = /* @__PURE__ */ _interopNamespace(ReactEmailEditor);
|
|
16
33
|
const useAuthRefresh = () => {
|
|
17
34
|
const { get } = admin.useFetchClient();
|
|
18
35
|
const intervalRef = React.useRef(null);
|
|
@@ -5324,6 +5341,10 @@ const TemplateList = () => {
|
|
|
5324
5341
|
)
|
|
5325
5342
|
] });
|
|
5326
5343
|
};
|
|
5344
|
+
const EmailEditorComponent = ReactEmailEditor__namespace.EmailEditor || ReactEmailEditor__namespace.default || ReactEmailEditor__namespace;
|
|
5345
|
+
if (!EmailEditorComponent) {
|
|
5346
|
+
console.error("[MagicMail] Failed to resolve EmailEditor component export", ReactEmailEditor__namespace);
|
|
5347
|
+
}
|
|
5327
5348
|
const STANDARD_EMAIL_TEMPLATE = {
|
|
5328
5349
|
counters: { u_row: 2, u_content_text: 1, u_content_image: 1, u_column: 2 },
|
|
5329
5350
|
body: {
|
|
@@ -6247,7 +6268,7 @@ const EditorPage = () => {
|
|
|
6247
6268
|
pointerEvents: editorLoaded ? "auto" : "none"
|
|
6248
6269
|
},
|
|
6249
6270
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
6250
|
-
|
|
6271
|
+
EmailEditorComponent,
|
|
6251
6272
|
{
|
|
6252
6273
|
ref: emailEditorRef,
|
|
6253
6274
|
onReady: onEditorReady,
|
|
@@ -6,7 +6,7 @@ import { EnvelopeIcon, ServerIcon, SparklesIcon, PlusIcon, PencilIcon, PlayIcon,
|
|
|
6
6
|
import { useFetchClient, useNotification } from "@strapi/strapi/admin";
|
|
7
7
|
import styled, { css, keyframes } from "styled-components";
|
|
8
8
|
import { Star, Mail, Server, Lock, Cog, Check, Cloud, Key, ArrowLeft, ArrowRight } from "@strapi/icons";
|
|
9
|
-
import
|
|
9
|
+
import * as ReactEmailEditor from "react-email-editor";
|
|
10
10
|
const useAuthRefresh = () => {
|
|
11
11
|
const { get } = useFetchClient();
|
|
12
12
|
const intervalRef = useRef(null);
|
|
@@ -5318,6 +5318,10 @@ const TemplateList = () => {
|
|
|
5318
5318
|
)
|
|
5319
5319
|
] });
|
|
5320
5320
|
};
|
|
5321
|
+
const EmailEditorComponent = ReactEmailEditor.EmailEditor || ReactEmailEditor.default || ReactEmailEditor;
|
|
5322
|
+
if (!EmailEditorComponent) {
|
|
5323
|
+
console.error("[MagicMail] Failed to resolve EmailEditor component export", ReactEmailEditor);
|
|
5324
|
+
}
|
|
5321
5325
|
const STANDARD_EMAIL_TEMPLATE = {
|
|
5322
5326
|
counters: { u_row: 2, u_content_text: 1, u_content_image: 1, u_column: 2 },
|
|
5323
5327
|
body: {
|
|
@@ -6241,7 +6245,7 @@ const EditorPage = () => {
|
|
|
6241
6245
|
pointerEvents: editorLoaded ? "auto" : "none"
|
|
6242
6246
|
},
|
|
6243
6247
|
children: /* @__PURE__ */ jsx(
|
|
6244
|
-
|
|
6248
|
+
EmailEditorComponent,
|
|
6245
6249
|
{
|
|
6246
6250
|
ref: emailEditorRef,
|
|
6247
6251
|
onReady: onEditorReady,
|
package/dist/admin/index.js
CHANGED
|
@@ -25,7 +25,7 @@ const index = {
|
|
|
25
25
|
id: `${pluginId}.plugin.name`,
|
|
26
26
|
defaultMessage: "MagicMail"
|
|
27
27
|
},
|
|
28
|
-
Component: () => Promise.resolve().then(() => require("../_chunks/App-
|
|
28
|
+
Component: () => Promise.resolve().then(() => require("../_chunks/App-DF9vAGXX.js"))
|
|
29
29
|
});
|
|
30
30
|
app.createSettingSection(
|
|
31
31
|
{
|
package/dist/admin/index.mjs
CHANGED
package/dist/server/index.js
CHANGED
package/dist/server/index.mjs
CHANGED
package/package.json
CHANGED