From 16b81fff380023e3795d7c7a82f7cd7de5ffbcc7 Mon Sep 17 00:00:00 2001 From: syuilo Date: Thu, 4 Jul 2019 21:07:02 +0900 Subject: Resolve #3431 --- src/client/app/admin/views/instance.vue | 27 +++++++++++++++++++++++++++ src/server/api/endpoints/admin/send-email.ts | 26 ++++++++++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 src/server/api/endpoints/admin/send-email.ts (limited to 'src') diff --git a/src/client/app/admin/views/instance.vue b/src/client/app/admin/views/instance.vue index 588b24f6b5..7d271bcb89 100644 --- a/src/client/app/admin/views/instance.vue +++ b/src/client/app/admin/views/instance.vue @@ -129,6 +129,7 @@ {{ $t('smtp-pass') }} {{ $t('smtp-secure') }} + {{ $t('test-email') }}
@@ -424,6 +425,32 @@ export default Vue.extend({ }); }, + async testEmail() { + const { canceled, result: to } = await this.$root.dialog({ + title: this.$t('test-email-to'), + input: { + type: 'email', + }, + showCancelButton: true + }); + if (canceled) return; + this.$root.api('admin/send-email', { + to: to, + subject: 'Test email', + text: 'Yo' + }).then(x => { + this.$root.dialog({ + type: 'success', + splash: true + }); + }).catch(e => { + this.$root.dialog({ + type: 'error', + text: e + }); + }); + }, + updateMeta() { this.$root.api('admin/update-meta', { maintainerName: this.maintainerName, diff --git a/src/server/api/endpoints/admin/send-email.ts b/src/server/api/endpoints/admin/send-email.ts new file mode 100644 index 0000000000..fed4f2df14 --- /dev/null +++ b/src/server/api/endpoints/admin/send-email.ts @@ -0,0 +1,26 @@ +import $ from 'cafy'; +import define from '../../define'; +import { sendEmail } from '../../../../services/send-email'; + +export const meta = { + tags: ['admin'], + + requireCredential: true, + requireModerator: true, + + params: { + to: { + validator: $.str, + }, + subject: { + validator: $.str, + }, + text: { + validator: $.str, + }, + } +}; + +export default define(meta, async (ps) => { + await sendEmail(ps.to, ps.subject, ps.text); +}); -- cgit v1.2.3-freya