mirror of
https://github.com/dreamhunter2333/cloudflare_temp_email.git
synced 2026-05-19 19:39:31 +08:00
feat: add ENABLE_USER_DELETE_EMAIL && ENABLE_AUTO_REPLY && modify fetchAddressError i18n && UI: show autoRefreshInterval (#169)
This commit is contained in:
@@ -22,33 +22,35 @@ async function email(message, env, ctx) {
|
||||
}
|
||||
|
||||
// auto reply email
|
||||
try {
|
||||
const results = await env.DB.prepare(
|
||||
`SELECT * FROM auto_reply_mails where address = ? and enabled = 1`
|
||||
).bind(message.to).first();
|
||||
if (results && results.source_prefix && message.from.startsWith(results.source_prefix)) {
|
||||
const msg = createMimeMessage();
|
||||
msg.setHeader("In-Reply-To", message.headers.get("Message-ID"));
|
||||
msg.setSender({
|
||||
name: results.name || results.address,
|
||||
addr: results.address
|
||||
});
|
||||
msg.setRecipient(message.from);
|
||||
msg.setSubject(results.subject || "Auto-reply");
|
||||
msg.addMessage({
|
||||
contentType: 'text/plain',
|
||||
data: results.message || "This is an auto-reply message, please reconact later."
|
||||
});
|
||||
if (env.ENABLE_AUTO_REPLY) {
|
||||
try {
|
||||
const results = await env.DB.prepare(
|
||||
`SELECT * FROM auto_reply_mails where address = ? and enabled = 1`
|
||||
).bind(message.to).first();
|
||||
if (results && results.source_prefix && message.from.startsWith(results.source_prefix)) {
|
||||
const msg = createMimeMessage();
|
||||
msg.setHeader("In-Reply-To", message.headers.get("Message-ID"));
|
||||
msg.setSender({
|
||||
name: results.name || results.address,
|
||||
addr: results.address
|
||||
});
|
||||
msg.setRecipient(message.from);
|
||||
msg.setSubject(results.subject || "Auto-reply");
|
||||
msg.addMessage({
|
||||
contentType: 'text/plain',
|
||||
data: results.message || "This is an auto-reply message, please reconact later."
|
||||
});
|
||||
|
||||
const replyMessage = new EmailMessage(
|
||||
message.to,
|
||||
message.from,
|
||||
msg.asRaw()
|
||||
);
|
||||
await message.reply(replyMessage);
|
||||
const replyMessage = new EmailMessage(
|
||||
message.to,
|
||||
message.from,
|
||||
msg.asRaw()
|
||||
);
|
||||
await message.reply(replyMessage);
|
||||
}
|
||||
} catch (error) {
|
||||
console.log("reply email error", error);
|
||||
}
|
||||
} catch (error) {
|
||||
console.log("reply email error", error);
|
||||
}
|
||||
} else {
|
||||
message.setReject(`Unknown address ${message.to}`);
|
||||
|
||||
@@ -34,6 +34,9 @@ api.get('/api/mails', async (c) => {
|
||||
})
|
||||
|
||||
api.delete('/api/mails/:id', async (c) => {
|
||||
if (c.env.ENABLE_USER_DELETE_EMAIL) {
|
||||
return c.text("User delete email is disabled", 403)
|
||||
}
|
||||
const { address } = c.get("jwtPayload")
|
||||
const { id } = c.req.param();
|
||||
const { success } = await c.env.DB.prepare(
|
||||
@@ -82,16 +85,18 @@ api.get('/api/settings', async (c) => {
|
||||
}
|
||||
}
|
||||
let auto_reply = {};
|
||||
const results = await c.env.DB.prepare(
|
||||
`SELECT * FROM auto_reply_mails where address = ? `
|
||||
).bind(address).first();
|
||||
if (results) {
|
||||
auto_reply = {
|
||||
subject: results.subject,
|
||||
message: results.message,
|
||||
enabled: results.enabled == 1,
|
||||
source_prefix: results.source_prefix,
|
||||
name: results.name,
|
||||
if (c.env.ENABLE_AUTO_REPLY) {
|
||||
const results = await c.env.DB.prepare(
|
||||
`SELECT * FROM auto_reply_mails where address = ? `
|
||||
).bind(address).first();
|
||||
if (results) {
|
||||
auto_reply = {
|
||||
subject: results.subject,
|
||||
message: results.message,
|
||||
enabled: results.enabled == 1,
|
||||
source_prefix: results.source_prefix,
|
||||
name: results.name,
|
||||
}
|
||||
}
|
||||
}
|
||||
const { count: mailCountV1 } = await c.env.DB.prepare(
|
||||
@@ -111,6 +116,9 @@ api.get('/api/settings', async (c) => {
|
||||
|
||||
api.post('/api/settings', async (c) => {
|
||||
const { address } = c.get("jwtPayload")
|
||||
if (!c.env.ENABLE_AUTO_REPLY) {
|
||||
return c.text("Auto reply is disabled", 403)
|
||||
}
|
||||
const { auto_reply } = await c.req.json();
|
||||
const { name, subject, source_prefix, message, enabled } = auto_reply;
|
||||
if ((!subject || !message) && enabled) {
|
||||
@@ -147,6 +155,8 @@ api.get('/open_api/settings', async (c) => {
|
||||
"domains": getDomains(c),
|
||||
"needAuth": needAuth,
|
||||
"adminContact": c.env.ADMIN_CONTACT,
|
||||
"enableUserDeleteEmail": c.env.ENABLE_USER_DELETE_EMAIL,
|
||||
"enableAutoReply": c.env.ENABLE_AUTO_REPLY,
|
||||
});
|
||||
})
|
||||
|
||||
@@ -204,6 +214,9 @@ api.get('/api/new_address', async (c) => {
|
||||
})
|
||||
|
||||
api.delete('/api/delete_address', async (c) => {
|
||||
if (c.env.ENABLE_USER_DELETE_EMAIL) {
|
||||
return c.text("User delete email is disabled", 403)
|
||||
}
|
||||
const { address } = c.get("jwtPayload")
|
||||
let name = address;
|
||||
if (address.startsWith(c.env.PREFIX)) {
|
||||
|
||||
Reference in New Issue
Block a user