diff --git a/dashboard/src/models/MailModel.js b/dashboard/src/models/MailModel.js index 1cce295b0..efdb55fc0 100644 --- a/dashboard/src/models/MailModel.js +++ b/dashboard/src/models/MailModel.js @@ -83,6 +83,17 @@ function create() { if (result.status !== 202) return [result]; return [null]; }, + async setMailBanner(domain, text, html) { + let result; + try { + result = await fetcher.post(`${API_ORIGIN}/api/v1/mail/${domain}/banner`, { text, html }, { access_token: accessToken }); + } catch (e) { + return [e]; + } + + if (result.status !== 202) return [result]; + return [null]; + }, async setEnabled(domain, enabled) { let result; try { diff --git a/dashboard/src/views/EmailDomainView.vue b/dashboard/src/views/EmailDomainView.vue index 10e487dee..49a2cda6f 100644 --- a/dashboard/src/views/EmailDomainView.vue +++ b/dashboard/src/views/EmailDomainView.vue @@ -94,6 +94,28 @@ async function onToggleMailFromValidation(value) { mailFromValidationBusy.value = false; } + +const signatureDialog = useTemplateRef('signatureDialog'); +const signatureBusy = ref(false); +const signatureText = ref(''); +const signatureHtml = ref(''); + +function onShowSignatureDialog() { + signatureBusy.value = false; + signatureDialog.value.open(); +} + +async function onSubmitSignature() { + signatureBusy.value = true; + + const [error] = await mailModel.setMailBanner(domain.value, signatureText.value, signatureHtml.value); + if (error) return console.error(error); + + signatureDialog.value.close(); + signatureBusy.value = false; +} + + async function refreshMailConfig() { const [error, result] = await mailModel.config(domain.value); @@ -102,6 +124,8 @@ async function refreshMailConfig() { mailConfig.value = result; incomingEnabled.value = result.enabled; mailFromValidation.value = result.mailFromValidation; + signatureText.value = mailConfig.value.banner.text || ''; + signatureHtml.value = mailConfig.value.banner.html || ''; refreshBusy.value = false; } @@ -123,6 +147,7 @@ onMounted(async () => { diff --git a/dashboard/src/views/EmailView.vue b/dashboard/src/views/EmailView.vue index 56eb2fe0b..5760d48cc 100644 --- a/dashboard/src/views/EmailView.vue +++ b/dashboard/src/views/EmailView.vue @@ -476,6 +476,7 @@ onMounted(async () => {
{{ $t('emails.settings.aclOverview', { dnsblZonesCount: dnsblZones.length }) }}
+
@@ -486,6 +487,7 @@ onMounted(async () => {
{{ $t('emails.settings.spamFilterOverview', { blacklistCount: blocklist.length }) }}
+