Skip to content

Commit 23840ad

Browse files
committed
feat(email): 新增可选的 from 字段用于设置发件地址
部分邮件服务商(如 SendGrid)的 SMTP 登录账号使用 API Key, 与实际的发件邮箱地址不同,因此需要单独配置发件人。 新增可选的 `from` 字段,未指定时回退使用 `username` 作为发件地址。
1 parent 485b2dd commit 23840ad

2 files changed

Lines changed: 7 additions & 1 deletion

File tree

config.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,10 @@ custom_tpl = """
117117
[email]
118118
enabled = false
119119
server = "smtp.gmail.com"
120+
# 可选:发件人邮箱地址。
121+
# 部分服务商(如 SendGrid)SMTP 登录账号(username)为 API Key 而非邮箱地址,
122+
# 此时需在此填写真实发件邮箱;留空则默认使用 username 作为发件地址。
123+
#from = "user@email.com"
120124
username = "user@email.com"
121125
password = "***"
122126
to = "user1@email.com;user2@email.com"

server/src/notifier/email.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ pub struct Config {
2020
pub server: String,
2121
pub username: String,
2222
pub password: String,
23+
pub from: Option<String>,
2324
pub to: String,
2425
pub subject: String,
2526
pub title: String,
@@ -48,9 +49,10 @@ impl crate::notifier::Notifier for Email {
4849
}
4950

5051
fn send_notify(&self, html_content: String) -> Result<()> {
52+
let from_addr = self.config.from.as_deref().unwrap_or(&self.config.username);
5153
let mut builder = Message::builder()
5254
.subject(self.config.subject.clone())
53-
.from(format!("ServerStatus <{}>", self.config.username).parse().unwrap());
55+
.from(format!("ServerStatus <{from_addr}>").parse().unwrap());
5456

5557
let mailboxes: Mailboxes = self.config.to.parse().expect("Invalid email addresses");
5658
for mailbox in mailboxes.iter() {

0 commit comments

Comments
 (0)