diff --git a/back/services/notify.ts b/back/services/notify.ts
index a8b2aeea..39a0e47b 100644
--- a/back/services/notify.ts
+++ b/back/services/notify.ts
@@ -91,6 +91,14 @@ export default class NotificationService {
return true;
}
+ private parseMailRecipients(value?: string) {
+ const recipients = (value || '')
+ .split(/[;;]/)
+ .map((item) => item.trim())
+ .filter(Boolean);
+ return recipients.length > 0 ? recipients : undefined;
+ }
+
private async gotify() {
const { gotifyUrl, gotifyToken, gotifyPriority = 1 } = this.params;
try {
@@ -592,6 +600,7 @@ export default class NotificationService {
private async email() {
const { emailPass, emailService, emailUser, emailTo } = this.params;
+ const recipients = this.parseMailRecipients(emailTo) || emailUser;
try {
const transporter = nodemailer.createTransport({
@@ -604,7 +613,7 @@ export default class NotificationService {
const info = await transporter.sendMail({
from: `"青龙快讯" <${emailUser}>`,
- to: emailTo ? emailTo.split(';') : emailUser,
+ to: recipients,
subject: `${this.title}`,
html: `${this.content.replace(/\n/g, '
')}`,
});
diff --git a/sample/config.sample.sh b/sample/config.sample.sh
index 9c93e78f..9f653e56 100644
--- a/sample/config.sample.sh
+++ b/sample/config.sample.sh
@@ -195,12 +195,14 @@ export SMTP_SERVER=""
## SMTP 发送邮件服务器是否使用 SSL,填写 true 或 false
export SMTP_SSL=""
-## smtp_email 填写 SMTP 收发件邮箱,通知将会由自己发给自己
+## smtp_email 填写 SMTP 发件邮箱
export SMTP_EMAIL=""
## smtp_password 填写 SMTP 登录密码,也可能为特殊口令,视具体邮件服务商说明而定
export SMTP_PASSWORD=""
## smtp_name 填写 SMTP 收发件人姓名,可随意填写
export SMTP_NAME=""
+## smtp_email_to 填写 SMTP 收件邮箱,多个用英文;分隔,不填默认发给发件邮箱
+export SMTP_EMAIL_TO=""
## 17. PushMe
## 官方说明文档:https://push.i-i.me/
diff --git a/sample/notify.js b/sample/notify.js
index 89803264..c0f3db43 100644
--- a/sample/notify.js
+++ b/sample/notify.js
@@ -121,7 +121,8 @@ const push_config = {
SMTP_SERVICE: '', // 邮箱服务名称,比如 126、163、Gmail、QQ 等,支持列表 https://github.com/nodemailer/nodemailer/blob/master/lib/well-known/services.json
SMTP_EMAIL: '', // SMTP 发件邮箱
- SMTP_TO: '', // SMTP 收件邮箱,默认通知将会发给发件邮箱
+ SMTP_TO: '', // SMTP 收件邮箱,兼容旧参数名,默认通知将会发给发件邮箱
+ SMTP_EMAIL_TO: '', // SMTP 收件邮箱,多个分号分隔,默认发给发件邮箱
SMTP_PASSWORD: '', // SMTP 登录密码,也可能为特殊口令,视具体邮件服务商说明而定
SMTP_NAME: '', // SMTP 收发件人姓名,可随意填写
@@ -1051,8 +1052,14 @@ function fsBotNotify(text, desp) {
}
async function smtpNotify(text, desp) {
- const { SMTP_EMAIL, SMTP_TO, SMTP_PASSWORD, SMTP_SERVICE, SMTP_NAME } =
- push_config;
+ const {
+ SMTP_EMAIL,
+ SMTP_TO,
+ SMTP_EMAIL_TO,
+ SMTP_PASSWORD,
+ SMTP_SERVICE,
+ SMTP_NAME,
+ } = push_config;
if (![SMTP_EMAIL, SMTP_PASSWORD].every(Boolean) || !SMTP_SERVICE) {
return;
}
@@ -1068,9 +1075,20 @@ async function smtpNotify(text, desp) {
});
const addr = SMTP_NAME ? `"${SMTP_NAME}" <${SMTP_EMAIL}>` : SMTP_EMAIL;
+ const recipients = [SMTP_EMAIL_TO, SMTP_TO].reduce((list, value) => {
+ if (!value) {
+ return list;
+ }
+ return list.concat(
+ value
+ .split(/[;;]/)
+ .map((item) => item.trim())
+ .filter(Boolean),
+ );
+ }, []);
const info = await transporter.sendMail({
from: addr,
- to: SMTP_TO ? SMTP_TO.split(';') : addr,
+ to: recipients.length ? recipients : SMTP_EMAIL,
subject: text,
html: `${desp.replace(/\n/g, '
')}`,
});
diff --git a/sample/notify.py b/sample/notify.py
index 46383498..da8bfdcf 100644
--- a/sample/notify.py
+++ b/sample/notify.py
@@ -107,7 +107,8 @@ push_config = {
'SMTP_SERVER': '', # SMTP 发送邮件服务器,形如 smtp.exmail.qq.com:465
'SMTP_SSL': 'false', # SMTP 发送邮件服务器是否使用 SSL,填写 true 或 false
- 'SMTP_EMAIL': '', # SMTP 收发件邮箱,通知将会由自己发给自己
+ 'SMTP_EMAIL': '', # SMTP 发件邮箱
+ 'SMTP_EMAIL_TO': '', # SMTP 收件邮箱,多个分号分隔,默认发给发件邮箱
'SMTP_PASSWORD': '', # SMTP 登录密码,也可能为特殊口令,视具体邮件服务商说明而定
'SMTP_NAME': '', # SMTP 收发件人姓名,可随意填写
@@ -694,6 +695,10 @@ def smtp(title: str, content: str) -> None:
return
print("SMTP 邮件 服务启动")
+ email_to = push_config.get("SMTP_EMAIL_TO") or push_config.get("SMTP_EMAIL")
+ email_to_list = [
+ item.strip() for item in re.split(r"[;;]", email_to) if item.strip()
+ ]
message = MIMEText(content, "plain", "utf-8")
message["From"] = formataddr(
(
@@ -701,12 +706,7 @@ def smtp(title: str, content: str) -> None:
push_config.get("SMTP_EMAIL"),
)
)
- message["To"] = formataddr(
- (
- Header(push_config.get("SMTP_NAME"), "utf-8").encode(),
- push_config.get("SMTP_EMAIL"),
- )
- )
+ message["To"] = ",".join(email_to_list)
message["Subject"] = Header(title, "utf-8")
try:
@@ -720,7 +720,7 @@ def smtp(title: str, content: str) -> None:
)
smtp_server.sendmail(
push_config.get("SMTP_EMAIL"),
- push_config.get("SMTP_EMAIL"),
+ email_to_list,
message.as_bytes(),
)
smtp_server.close()