Email Configuration Successful!
This is a test email to verify your SMTP settings are working correctly.
package admin import ( "html" "strings" "github.com/Wei-Shaw/sub2api/internal/handler/dto" "github.com/Wei-Shaw/sub2api/internal/pkg/response" "github.com/Wei-Shaw/sub2api/internal/service" "github.com/gin-gonic/gin" ) // TestSMTPRequest 测试SMTP连接请求 type TestSMTPRequest struct { SMTPHost string `json:"smtp_host"` SMTPPort int `json:"smtp_port"` SMTPUsername string `json:"smtp_username"` SMTPPassword string `json:"smtp_password"` SMTPUseTLS bool `json:"smtp_use_tls"` } // TestSMTPConnection 测试SMTP连接 // POST /api/v1/admin/settings/test-smtp func (h *SettingHandler) TestSMTPConnection(c *gin.Context) { var req TestSMTPRequest if err := c.ShouldBindJSON(&req); err != nil { response.BadRequest(c, "Invalid request: "+err.Error()) return } req.SMTPHost = strings.TrimSpace(req.SMTPHost) req.SMTPUsername = strings.TrimSpace(req.SMTPUsername) var savedConfig *service.SMTPConfig if cfg, err := h.emailService.GetSMTPConfig(c.Request.Context()); err == nil && cfg != nil { savedConfig = cfg } if req.SMTPHost == "" && savedConfig != nil { req.SMTPHost = savedConfig.Host } if req.SMTPPort <= 0 { if savedConfig != nil && savedConfig.Port > 0 { req.SMTPPort = savedConfig.Port } else { req.SMTPPort = 587 } } if req.SMTPUsername == "" && savedConfig != nil { req.SMTPUsername = savedConfig.Username } password := strings.TrimSpace(req.SMTPPassword) if password == "" && savedConfig != nil { password = savedConfig.Password } if req.SMTPHost == "" { response.BadRequest(c, "SMTP host is required") return } config := &service.SMTPConfig{ Host: req.SMTPHost, Port: req.SMTPPort, Username: req.SMTPUsername, Password: password, UseTLS: req.SMTPUseTLS, } err := h.emailService.TestSMTPConnectionWithConfig(config) if err != nil { response.BadRequest(c, "SMTP connection test failed: "+err.Error()) return } response.Success(c, gin.H{"message": "SMTP connection successful"}) } // SendTestEmailRequest 发送测试邮件请求 type SendTestEmailRequest struct { Email string `json:"email" binding:"required,email"` SMTPHost string `json:"smtp_host"` SMTPPort int `json:"smtp_port"` SMTPUsername string `json:"smtp_username"` SMTPPassword string `json:"smtp_password"` SMTPFrom string `json:"smtp_from_email"` SMTPFromName string `json:"smtp_from_name"` SMTPUseTLS bool `json:"smtp_use_tls"` } // SendTestEmail 发送测试邮件 // POST /api/v1/admin/settings/send-test-email func (h *SettingHandler) SendTestEmail(c *gin.Context) { var req SendTestEmailRequest if err := c.ShouldBindJSON(&req); err != nil { response.BadRequest(c, "Invalid request: "+err.Error()) return } req.SMTPHost = strings.TrimSpace(req.SMTPHost) req.SMTPUsername = strings.TrimSpace(req.SMTPUsername) req.SMTPFrom = strings.TrimSpace(req.SMTPFrom) req.SMTPFromName = strings.TrimSpace(req.SMTPFromName) var savedConfig *service.SMTPConfig if cfg, err := h.emailService.GetSMTPConfig(c.Request.Context()); err == nil && cfg != nil { savedConfig = cfg } if req.SMTPHost == "" && savedConfig != nil { req.SMTPHost = savedConfig.Host } if req.SMTPPort <= 0 { if savedConfig != nil && savedConfig.Port > 0 { req.SMTPPort = savedConfig.Port } else { req.SMTPPort = 587 } } if req.SMTPUsername == "" && savedConfig != nil { req.SMTPUsername = savedConfig.Username } password := strings.TrimSpace(req.SMTPPassword) if password == "" && savedConfig != nil { password = savedConfig.Password } if req.SMTPFrom == "" && savedConfig != nil { req.SMTPFrom = savedConfig.From } if req.SMTPFromName == "" && savedConfig != nil { req.SMTPFromName = savedConfig.FromName } if req.SMTPHost == "" { response.BadRequest(c, "SMTP host is required") return } config := &service.SMTPConfig{ Host: req.SMTPHost, Port: req.SMTPPort, Username: req.SMTPUsername, Password: password, From: req.SMTPFrom, FromName: req.SMTPFromName, UseTLS: req.SMTPUseTLS, } siteName := h.settingService.GetSiteName(c.Request.Context()) subject := "[" + siteName + "] Test Email" body := `
This is a test email to verify your SMTP settings are working correctly.