Почта: поле «Проверочное письмо — кому» вернулось — по умолчанию администратор системы, можно указать свой адрес
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
This commit is contained in:
@@ -1042,6 +1042,7 @@ func (h *setupHandlers) saveAlertsSMTP(w http.ResponseWriter, r *http.Request) {
|
||||
Password: pickStr(r.FormValue("password"), a.SMTP.Password), // пароль в страницу не выводится: пусто — прежний
|
||||
From: strings.TrimSpace(r.FormValue("from")),
|
||||
To: a.SMTP.To, // адрес администратора системы — в «Кому писать» (notifyGroupsCard)
|
||||
TestTo: smtpTestTo(r, a.SMTP),
|
||||
LastMsg: a.SMTP.LastMsg,
|
||||
LastAt: a.SMTP.LastAt,
|
||||
}
|
||||
@@ -1052,6 +1053,20 @@ func (h *setupHandlers) saveAlertsSMTP(w http.ResponseWriter, r *http.Request) {
|
||||
setupFlash(w, r, "Настройки SMTP сохранены")
|
||||
}
|
||||
|
||||
// smtpTestTo — адрес проверочного письма из формы «Почта»; совпадает с адресом администратора — не храним отдельно
|
||||
// (поле показывает его по умолчанию), поля в запросе нет — прежний.
|
||||
func smtpTestTo(r *http.Request, s SMTPSettings) string {
|
||||
_ = r.ParseForm()
|
||||
if _, ok := r.Form["test_to"]; !ok {
|
||||
return s.TestTo
|
||||
}
|
||||
v := strings.TrimSpace(r.FormValue("test_to"))
|
||||
if v == strings.TrimSpace(s.To) {
|
||||
return ""
|
||||
}
|
||||
return v
|
||||
}
|
||||
|
||||
// testAlertsSMTP шлёт пробное письмо по текущим (сохранённым) настройкам.
|
||||
func (h *setupHandlers) testAlertsSMTP(w http.ResponseWriter, r *http.Request) {
|
||||
if r.Method != http.MethodPost {
|
||||
@@ -1060,8 +1075,11 @@ func (h *setupHandlers) testAlertsSMTP(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
cfg := h.rc.Snapshot()
|
||||
a := cfg.Alerts
|
||||
// кому: администратор системы, а пока его адреса нет — все адреса отделов из «Кому писать»
|
||||
// кому: адрес из поля «Проверочное письмо — кому», иначе администратор системы, а пока его адреса нет —
|
||||
// все адреса отделов из «Кому писать»
|
||||
a.SMTP.TestTo = smtpTestTo(r, a.SMTP)
|
||||
test := a.SMTP
|
||||
test.To = pickStr(a.SMTP.TestTo, a.SMTP.To)
|
||||
if strings.TrimSpace(test.To) == "" {
|
||||
var all []string
|
||||
for _, k := range notifyKinds {
|
||||
@@ -1070,7 +1088,7 @@ func (h *setupHandlers) testAlertsSMTP(w http.ResponseWriter, r *http.Request) {
|
||||
test.To = mergeEmails(all...)
|
||||
}
|
||||
if strings.TrimSpace(test.To) == "" {
|
||||
setupFlash(w, r, "Проверка SMTP: укажите хотя бы один адрес в блоке «Кому писать» и сохраните")
|
||||
setupFlash(w, r, "Проверка SMTP: укажите, куда отправить проверочное письмо")
|
||||
return
|
||||
}
|
||||
err := sendSMTP(test, "[bj] Проверка уведомлений", "Это проверочное письмо от bj-server. Если вы его получили — SMTP-канал оповещений работает.")
|
||||
|
||||
Reference in New Issue
Block a user