Added smtp alerts
This commit is contained in:
parent
3703b13d81
commit
bc57f96b70
1 changed files with 29 additions and 1 deletions
30
email.go
30
email.go
|
|
@ -32,7 +32,7 @@ func emailSendHTML(subject, message string) error {
|
||||||
|
|
||||||
var auth smtp.Auth
|
var auth smtp.Auth
|
||||||
if cfgEmailSMTPUser != "" && cfgEmailSMTPPassword != "" {
|
if cfgEmailSMTPUser != "" && cfgEmailSMTPPassword != "" {
|
||||||
auth = smtp.PlainAuth("", cfgEmailSMTPUser, cfgEmailSMTPPassword, cfgEmailSMTPHost)
|
auth = &emailLoginAuth{user: cfgEmailSMTPUser, password: cfgEmailSMTPPassword}
|
||||||
}
|
}
|
||||||
|
|
||||||
header := strings.Join([]string{
|
header := strings.Join([]string{
|
||||||
|
|
@ -55,6 +55,34 @@ func emailSendHTML(subject, message string) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ── LOGIN Auth ───────────────────────────────────────────────────────────────
|
||||||
|
// Реализация AUTH LOGIN для SMTP-серверов которые не поддерживают AUTH PLAIN.
|
||||||
|
// Стандартный smtp.PlainAuth использует механизм PLAIN — некоторые серверы
|
||||||
|
// (например Microsoft Exchange) принимают только LOGIN.
|
||||||
|
|
||||||
|
type emailLoginAuth struct {
|
||||||
|
user string
|
||||||
|
password string
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *emailLoginAuth) Start(_ *smtp.ServerInfo) (string, []byte, error) {
|
||||||
|
return "LOGIN", nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *emailLoginAuth) Next(fromServer []byte, more bool) ([]byte, error) {
|
||||||
|
if !more {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
switch strings.ToLower(strings.TrimSpace(string(fromServer))) {
|
||||||
|
case "username:":
|
||||||
|
return []byte(a.user), nil
|
||||||
|
case "password:":
|
||||||
|
return []byte(a.password), nil
|
||||||
|
default:
|
||||||
|
return nil, fmt.Errorf("неожиданный запрос от SMTP-сервера: %q", string(fromServer))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// emailBuildHTML оборачивает тело сообщения в HTML-шаблон письма.
|
// emailBuildHTML оборачивает тело сообщения в HTML-шаблон письма.
|
||||||
// Telegram-теги уже являются валидным HTML, поэтому конвертация не нужна.
|
// Telegram-теги уже являются валидным HTML, поэтому конвертация не нужна.
|
||||||
func emailBuildHTML(subject, body string) string {
|
func emailBuildHTML(subject, body string) string {
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue