v5.0
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
import config from "../config";
|
||||
import * as nodemailer from "nodemailer";
|
||||
|
||||
import type SMTPTransport from "nodemailer/lib/smtp-transport";
|
||||
|
||||
export interface EmailMessage {
|
||||
from: string;
|
||||
to: string | string[];
|
||||
subject: string;
|
||||
text?: string;
|
||||
html?: string;
|
||||
}
|
||||
|
||||
async function createTransporter() {
|
||||
const transporter = nodemailer.createTransport({
|
||||
host: config.emergency.mail.host,
|
||||
port: config.emergency.mail.port,
|
||||
secure: config.emergency.mail.secure,
|
||||
auth: {
|
||||
user: config.emergency.mail.user,
|
||||
pass: config.emergency.mail.password,
|
||||
},
|
||||
} as SMTPTransport.Options);
|
||||
|
||||
// 接続テスト
|
||||
try {
|
||||
await transporter.verify();
|
||||
console.log("SMTPサーバーに接続できました");
|
||||
} catch (error) {
|
||||
console.error("SMTP接続テストに失敗:", error);
|
||||
throw error;
|
||||
}
|
||||
|
||||
return transporter;
|
||||
}
|
||||
|
||||
export default async function sendMail(message: EmailMessage): Promise<void> {
|
||||
try {
|
||||
const transporter = await createTransporter();
|
||||
|
||||
await transporter.sendMail({
|
||||
from: message.from,
|
||||
to: Array.isArray(message.to) ? message.to.join(",") : message.to,
|
||||
subject: message.subject,
|
||||
text: message.text,
|
||||
html: message.html,
|
||||
});
|
||||
console.log("メール送信成功");
|
||||
} catch (error) {
|
||||
console.error("メール送信に失敗しました:", error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user