aboutsummaryrefslogtreecommitdiffstats
path: root/plugins
diff options
context:
space:
mode:
authorLibravatarLibravatar Biswa Kalyan Bhuyan <[email protected]> 2025-05-24 11:03:37 +0530
committerLibravatarLibravatar Biswa Kalyan Bhuyan <[email protected]> 2025-05-24 11:25:16 +0530
commita8c6c22e7f5b629db3e6f275028a23ee9a9a50f3 (patch)
tree9106f6758856952870ab5f2b67ebe6ad97630e64 /plugins
parent85ca823eb29347726596389133ff14c8288d9185 (diff)
downloadalps-master.tar.gz
alps-master.tar.bz2
alps-master.zip
Add custom SMTP authentication supportHEADmaster
- Add SMTPUsername and SMTPPassword fields to Settings struct - Update DoSMTP method to use custom credentials when available - Add SMTP credential fields to all theme templates - Support independent username/password configuration Fixes authentication issues when using different SMTP credentials than login credentials, useful for app-specific passwords.
Diffstat (limited to 'plugins')
-rw-r--r--plugins/base/public/settings.html37
-rw-r--r--plugins/base/routes.go10
2 files changed, 47 insertions, 0 deletions
diff --git a/plugins/base/public/settings.html b/plugins/base/public/settings.html
index 7acacb5..da950e4 100644
--- a/plugins/base/public/settings.html
+++ b/plugins/base/public/settings.html
@@ -9,9 +9,46 @@
<h2>Settings</h2>
<form method="post" action="">
+ <label for="from">Full name:</label>
+ <input type="text" name="from" id="from" value="{{.Settings.From}}">
+ <br><br>
+
+ <label for="signature">Message signature:</label>
+ <textarea name="signature" id="signature" rows="5">{{.Settings.Signature}}</textarea>
+ <br><br>
+
+ <label for="smtp_username">Custom SMTP Username (optional):</label>
+ <input type="text" name="smtp_username" id="smtp_username" value="{{.Settings.SMTPUsername}}" placeholder="Leave empty to use login username">
+ <br>
+ <small>Use this if your SMTP server requires different credentials than your email login</small>
+ <br><br>
+
+ <label for="smtp_password">Custom SMTP Password (optional):</label>
+ <input type="password" name="smtp_password" id="smtp_password" value="{{.Settings.SMTPPassword}}" placeholder="Leave empty to use login password">
+ <br>
+ <small>Use this if your SMTP server requires different credentials than your email login</small>
+ <br><br>
+
+ <label for="subscriptions">Subscribed folders:</label>
+ <select name="subscriptions" id="subscriptions" multiple>
+ {{ $subs := .Subscriptions }}
+ {{ range .Mailboxes }}
+ {{ if and (ne .Name "INBOX") (not (.HasAttr "\\Noselect")) }}
+ <option
+ value="{{.Name}}"
+ {{ if $subs.Has .Name }}
+ selected
+ {{ end }}
+ >{{.Name}}</option>
+ {{ end }}
+ {{ end }}
+ </select>
+ <br><br>
+
<label for="messages_per_page">Messages per page:</label>
<input type="number" name="messages_per_page" id="messages_per_page" required value="{{.Settings.MessagesPerPage}}">
<br><br>
+
<input type="submit" value="Save">
</form>
diff --git a/plugins/base/routes.go b/plugins/base/routes.go
index 623a5cc..4640c93 100644
--- a/plugins/base/routes.go
+++ b/plugins/base/routes.go
@@ -1243,6 +1243,8 @@ type Settings struct {
Signature string
From string
Subscriptions []string
+ SMTPUsername string
+ SMTPPassword string
}
func loadSettings(s alps.Store) (*Settings, error) {
@@ -1268,6 +1270,12 @@ func (s *Settings) check() error {
if len(s.From) > 512 {
return fmt.Errorf("Full name must be 512 characters or fewer")
}
+ if len(s.SMTPUsername) > 255 {
+ return fmt.Errorf("SMTP username must be 255 characters or fewer")
+ }
+ if len(s.SMTPPassword) > 255 {
+ return fmt.Errorf("SMTP password must be 255 characters or fewer")
+ }
return nil
}
@@ -1311,6 +1319,8 @@ func handleSettings(ctx *alps.Context) error {
}
settings.Signature = ctx.FormValue("signature")
settings.From = ctx.FormValue("from")
+ settings.SMTPUsername = ctx.FormValue("smtp_username")
+ settings.SMTPPassword = ctx.FormValue("smtp_password")
params, err := ctx.FormParams()
if err != nil {