| @@ -10,6 +10,7 @@ import ( | |||||
| "errors" | "errors" | ||||
| "fmt" | "fmt" | ||||
| "net/smtp" | "net/smtp" | ||||
| "net/textproto" | |||||
| "strings" | "strings" | ||||
| "time" | "time" | ||||
| @@ -371,7 +372,11 @@ func LoginUserSMTPSource(u *User, name, passwd string, sourceID int64, cfg *SMTP | |||||
| } | } | ||||
| if err := SMTPAuth(auth, cfg); err != nil { | if err := SMTPAuth(auth, cfg); err != nil { | ||||
| if strings.Contains(err.Error(), "Username and Password not accepted") { | |||||
| // Check standard error format first, | |||||
| // then fallback to worse case. | |||||
| tperr, ok := err.(*textproto.Error) | |||||
| if (ok && tperr.Code == 535) || | |||||
| strings.Contains(err.Error(), "Username and Password not accepted") { | |||||
| return nil, ErrUserNotExist{0, name} | return nil, ErrUserNotExist{0, name} | ||||
| } | } | ||||
| return nil, err | return nil, err | ||||