فهرست منبع

feat: able to configure smtp from now (close #34)

JustSong 2 سال پیش
والد
کامیت
f5f4e6fbc6
4فایلهای تغییر یافته به همراه23 افزوده شده و 2 حذف شده
  1. 1 0
      common/constants.go
  2. 1 1
      common/email.go
  3. 6 0
      model/option.go
  4. 15 1
      web/src/components/SystemSetting.js

+ 1 - 0
common/constants.go

@@ -36,6 +36,7 @@ var RegisterEnabled = true
 var SMTPServer = ""
 var SMTPPort = 587
 var SMTPAccount = ""
+var SMTPFrom = ""
 var SMTPToken = ""
 
 var GitHubClientId = ""

+ 1 - 1
common/email.go

@@ -11,7 +11,7 @@ func SendEmail(subject string, receiver string, content string) error {
 		"From: %s<%s>\r\n"+
 		"Subject: %s\r\n"+
 		"Content-Type: text/html; charset=UTF-8\r\n\r\n%s\r\n",
-		receiver, SystemName, SMTPAccount, subject, content))
+		receiver, SystemName, SMTPFrom, subject, content))
 	auth := smtp.PlainAuth("", SMTPAccount, SMTPToken, SMTPServer)
 	addr := fmt.Sprintf("%s:%d", SMTPServer, SMTPPort)
 	to := strings.Split(receiver, ";")

+ 6 - 0
model/option.go

@@ -33,6 +33,7 @@ func InitOptionMap() {
 	common.OptionMap["TurnstileCheckEnabled"] = strconv.FormatBool(common.TurnstileCheckEnabled)
 	common.OptionMap["RegisterEnabled"] = strconv.FormatBool(common.RegisterEnabled)
 	common.OptionMap["SMTPServer"] = ""
+	common.OptionMap["SMTPFrom"] = ""
 	common.OptionMap["SMTPPort"] = strconv.Itoa(common.SMTPPort)
 	common.OptionMap["SMTPAccount"] = ""
 	common.OptionMap["SMTPToken"] = ""
@@ -58,6 +59,9 @@ func InitOptionMap() {
 			common.SysError("Failed to update option map: " + err.Error())
 		}
 	}
+	if common.SMTPFrom == "" { // for compatibility
+		common.SMTPFrom = common.SMTPAccount
+	}
 }
 
 func UpdateOption(key string, value string) error {
@@ -120,6 +124,8 @@ func updateOptionMap(key string, value string) (err error) {
 		common.SMTPPort = intValue
 	case "SMTPAccount":
 		common.SMTPAccount = value
+	case "SMTPFrom":
+		common.SMTPFrom = value
 	case "SMTPToken":
 		common.SMTPToken = value
 	case "ServerAddress":

+ 15 - 1
web/src/components/SystemSetting.js

@@ -14,6 +14,7 @@ const SystemSetting = () => {
     SMTPServer: '',
     SMTPPort: '',
     SMTPAccount: '',
+    SMTPFrom: '',
     SMTPToken: '',
     ServerAddress: '',
     Footer: '',
@@ -129,6 +130,9 @@ const SystemSetting = () => {
     if (originInputs['SMTPAccount'] !== inputs.SMTPAccount) {
       await updateOption('SMTPAccount', inputs.SMTPAccount);
     }
+    if (originInputs['SMTPFrom'] !== inputs.SMTPFrom) {
+      await updateOption('SMTPFrom', inputs.SMTPFrom);
+    }
     if (
       originInputs['SMTPPort'] !== inputs.SMTPPort &&
       inputs.SMTPPort !== ''
@@ -298,7 +302,7 @@ const SystemSetting = () => {
             配置 SMTP
             <Header.Subheader>用以支持系统的邮件发送</Header.Subheader>
           </Header>
-          <Form.Group widths={4}>
+          <Form.Group widths={3}>
             <Form.Input
               label='SMTP 服务器地址'
               name='SMTPServer'
@@ -323,6 +327,16 @@ const SystemSetting = () => {
               value={inputs.SMTPAccount}
               placeholder='通常是邮箱地址'
             />
+          </Form.Group>
+          <Form.Group widths={3}>
+            <Form.Input
+              label='SMTP 发送者邮箱'
+              name='SMTPFrom'
+              onChange={handleInputChange}
+              autoComplete='new-password'
+              value={inputs.SMTPFrom}
+              placeholder='通常和邮箱地址保持一致'
+            />
             <Form.Input
               label='SMTP 访问凭证'
               name='SMTPToken'