fix: SMTP test send JSON instead of multipart FormData (ParseForm can't read multipart)

This commit is contained in:
mirivlad 2026-06-02 00:14:52 +08:00
parent c8cdb089a6
commit fa6f988368
1 changed files with 18 additions and 9 deletions

View File

@ -1486,9 +1486,10 @@ function closeHealth(e){if(!e||e.target.id==='health-modal')document.getElementB
function testSMTP(){
var f=document.querySelector('#smtp-modal form')
var fd=new FormData(f)
var obj={};for(var e of fd.entries()){obj[e[0]]=e[1]}
var r=document.getElementById('smtp-test-result')
r.textContent=' Тестируем...';r.style.color='#888'
fetch('/admin/api/smtp/test',{method:'POST',body:fd}).then(function(r2){return r2.json()}).then(function(d){
fetch('/admin/api/smtp/test',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify(obj)}).then(function(r2){return r2.json()}).then(function(d){
r.textContent=d.ok?' Тест пройден':' '+d.error
r.style.color=d.ok?'#4ade80':'#ff6b6b'
}).catch(function(e){r.textContent=' '+e;r.style.color='#ff6b6b'})
@ -1546,16 +1547,24 @@ func (s *Server) handleAdminSMTPTest(w http.ResponseWriter, r *http.Request) {
if !s.requireAdmin(w, r) {
return
}
if err := r.ParseForm(); err != nil {
jsonErr(w, 400, "bad form")
var req struct {
Host string `json:"smtp_host"`
Port string `json:"smtp_port"`
User string `json:"smtp_user"`
Pass string `json:"smtp_pass"`
From string `json:"smtp_from"`
To string `json:"test_to"`
}
if err := json.NewDecoder(r.Body).Decode(&req); err != nil {
jsonErr(w, 400, "bad json")
return
}
host := r.FormValue("smtp_host")
port := r.FormValue("smtp_port")
user := r.FormValue("smtp_user")
pass := r.FormValue("smtp_pass")
from := r.FormValue("smtp_from")
to := r.FormValue("test_to")
host := req.Host
port := req.Port
user := req.User
pass := req.Pass
from := req.From
to := req.To
if to == "" {
to = from
}