From 23840adc37becc3edcfb994644e4a1e2448cf27d Mon Sep 17 00:00:00 2001 From: rustupup Date: Sat, 11 Jul 2026 22:32:57 +0800 Subject: [PATCH] =?UTF-8?q?feat(email):=20=E6=96=B0=E5=A2=9E=E5=8F=AF?= =?UTF-8?q?=E9=80=89=E7=9A=84=20`from`=20=E5=AD=97=E6=AE=B5=E7=94=A8?= =?UTF-8?q?=E4=BA=8E=E8=AE=BE=E7=BD=AE=E5=8F=91=E4=BB=B6=E5=9C=B0=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 部分邮件服务商(如 SendGrid)的 SMTP 登录账号使用 API Key, 与实际的发件邮箱地址不同,因此需要单独配置发件人。 新增可选的 `from` 字段,未指定时回退使用 `username` 作为发件地址。 --- config.toml | 4 ++++ server/src/notifier/email.rs | 4 +++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/config.toml b/config.toml index da4cfb55..dff64309 100644 --- a/config.toml +++ b/config.toml @@ -117,6 +117,10 @@ custom_tpl = """ [email] enabled = false server = "smtp.gmail.com" +# 可选:发件人邮箱地址。 +# 部分服务商(如 SendGrid)SMTP 登录账号(username)为 API Key 而非邮箱地址, +# 此时需在此填写真实发件邮箱;留空则默认使用 username 作为发件地址。 +#from = "user@email.com" username = "user@email.com" password = "***" to = "user1@email.com;user2@email.com" diff --git a/server/src/notifier/email.rs b/server/src/notifier/email.rs index a6bbcb71..a2bfbcd1 100644 --- a/server/src/notifier/email.rs +++ b/server/src/notifier/email.rs @@ -20,6 +20,7 @@ pub struct Config { pub server: String, pub username: String, pub password: String, + pub from: Option, pub to: String, pub subject: String, pub title: String, @@ -48,9 +49,10 @@ impl crate::notifier::Notifier for Email { } fn send_notify(&self, html_content: String) -> Result<()> { + let from_addr = self.config.from.as_deref().unwrap_or(&self.config.username); let mut builder = Message::builder() .subject(self.config.subject.clone()) - .from(format!("ServerStatus <{}>", self.config.username).parse().unwrap()); + .from(format!("ServerStatus <{from_addr}>").parse().unwrap()); let mailboxes: Mailboxes = self.config.to.parse().expect("Invalid email addresses"); for mailbox in mailboxes.iter() {