summaryrefslogtreecommitdiff
path: root/src/services/send-email.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/services/send-email.ts')
-rw-r--r--src/services/send-email.ts36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/services/send-email.ts b/src/services/send-email.ts
new file mode 100644
index 0000000000..8818c5fcde
--- /dev/null
+++ b/src/services/send-email.ts
@@ -0,0 +1,36 @@
+import * as nodemailer from 'nodemailer';
+import { fetchMeta } from '../misc/fetch-meta';
+import Logger from './logger';
+
+export const logger = new Logger('email');
+
+export async function sendEmail(to: string, subject: string, text: string) {
+ const meta = await fetchMeta(true);
+
+ const enableAuth = meta.smtpUser != null && meta.smtpUser !== '';
+
+ const transporter = nodemailer.createTransport({
+ host: meta.smtpHost,
+ port: meta.smtpPort,
+ secure: meta.smtpSecure,
+ ignoreTLS: !enableAuth,
+ auth: enableAuth ? {
+ user: meta.smtpUser,
+ pass: meta.smtpPass
+ } : undefined
+ } as any);
+
+ try {
+ const info = await transporter.sendMail({
+ from: meta.email!,
+ to: to,
+ subject: subject || 'Misskey',
+ text: text
+ });
+
+ logger.info('Message sent: %s', info.messageId);
+ } catch (e) {
+ logger.error(e);
+ throw e;
+ }
+}