(cachedMusicFolders.size());
         for (MusicFolder folder : cachedMusicFolders) {
             if ((includeDisabled || folder.isEnabled()) && (includeNonExisting || FileUtil.exists(folder.getPath()))) {
@@ -1446,4 +1458,54 @@ public class SettingsService {
     public void setVersionService(VersionService versionService) {
         this.versionService = versionService;
     }
+
+    public String getSmtpServer() {
+        return properties.getProperty(KEY_SMTP_SERVER, DEFAULT_SMTP_SERVER);
+    }
+
+    public void setSmtpServer(String smtpServer) {
+        setString(KEY_SMTP_SERVER, smtpServer);
+    }
+
+    public String getSmtpPort() {
+        return getString(KEY_SMTP_PORT, DEFAULT_SMTP_PORT);
+    }
+
+    public void setSmtpPort(String smtpPort) {
+        setString(KEY_SMTP_PORT, smtpPort);
+    }
+
+    public String getSmtpEncryption() {
+        return properties.getProperty(KEY_SMTP_ENCRYPTION, DEFAULT_SMTP_ENCRYPTION);
+    }
+
+    public void setSmtpEncryption(String encryptionMethod) {
+        setString(KEY_SMTP_ENCRYPTION, encryptionMethod);
+    }
+
+    public String getSmtpUser() {
+        return properties.getProperty(KEY_SMTP_USER, DEFAULT_SMTP_USER);
+    }
+
+    public void setSmtpUser(String smtpUser) {
+        setString(KEY_SMTP_USER, smtpUser);
+    }
+
+    public String getSmtpPassword() {
+        String s = properties.getProperty(KEY_SMTP_PASSWORD, DEFAULT_SMTP_PASSWORD);
+        try {
+            return StringUtil.utf8HexDecode(s);
+        } catch (Exception x) {
+            LOG.warn("Failed to decode Smtp password.", x);
+            return s;
+        }
+    }
+    public void setSmtpPassword(String smtpPassword) {
+        try {
+            smtpPassword = StringUtil.utf8HexEncode(smtpPassword);
+        } catch (Exception x) {
+            LOG.warn("Failed to encode Smtp password.", x);
+        }
+        properties.setProperty(KEY_SMTP_PASSWORD, smtpPassword);
+    }
 }
diff --git a/libresonic-main/src/main/resources/org/libresonic/player/i18n/ResourceBundle_en.properties b/libresonic-main/src/main/resources/org/libresonic/player/i18n/ResourceBundle_en.properties
index 0deade45..6fc2cae7 100644
--- a/libresonic-main/src/main/resources/org/libresonic/player/i18n/ResourceBundle_en.properties
+++ b/libresonic-main/src/main/resources/org/libresonic/player/i18n/ResourceBundle_en.properties
@@ -341,6 +341,14 @@ advancedsettings.ldapsearchfilter = LDAP search filter
 advancedsettings.ldapmanagerdn = LDAP manager DN
(Optional)
 advancedsettings.ldapmanagerpassword = Password
 advancedsettings.ldapautoshadowing = Automatically create users in {0}
+advancedsettings.smtpPort = SMTP port
+advancedsettings.smtpServer = SMTP server
+advancedsettings.smtpEncryption = SMTP encryption method
+advancedsettings.smtpUser = SMTP username
+advancedsettings.smtpPassword = SMTP password
+advancedsettings.smtpEncryption.none = None
+advancedsettings.smtpEncryption.starttls = STARTTLS
+advancedsettings.smtpEncryption.ssl = SSL/TLS
 
 # personalSettings.jsp
 personalsettings.title = Personal settings for {0}
@@ -808,6 +816,15 @@ helppopup.autocontrol.text = With this option selected, {0} will automaticall
                              in the playlist. Otherwise, you must start and connect the player yourself.
 helppopup.dynamicip.title = Dynamic IP address
 helppopup.dynamicip.text = Turn off this option if the player uses a static IP address.
+helppopup.smtpServer.title = SMTP Server
+helppopup.smtpServer.text = The hostname of the SMTP server. This server will be used to send e-mails to users \
+                            who have requested a password reset.
+helppopup.smtpPort.title = SMTP Port
+helppopup.smtpPort.text = The server's port that should be connected to for SMTP traffic.
+helppopup.smtpUser.title = SMTP User
+helppopup.smtpUser.text = The username to be used to authenticate with the server. Leave empty to connect without authentication.
+helppopup.smtpEncryption.title = SMTP Encryption
+helppopup.smtpEncryption.text = The encryption method to be used to connect to the SMTP server. Choose "None" for no encryption.
 
 # wap/index.jsp
 wap.index.missing = No music found
diff --git a/libresonic-main/src/main/resources/org/libresonic/player/i18n/ResourceBundle_nl.properties b/libresonic-main/src/main/resources/org/libresonic/player/i18n/ResourceBundle_nl.properties
index d98cc8e3..2dae8742 100644
--- a/libresonic-main/src/main/resources/org/libresonic/player/i18n/ResourceBundle_nl.properties
+++ b/libresonic-main/src/main/resources/org/libresonic/player/i18n/ResourceBundle_nl.properties
@@ -339,6 +339,12 @@ advancedsettings.ldapsearchfilter = LDAP zoekfilter
 advancedsettings.ldapmanagerdn = LDAP manager DN
(Optioneel)
 advancedsettings.ldapmanagerpassword = Wachtwoord
 advancedsettings.ldapautoshadowing = Maak automatisch gebruikers aan in {0}
+advancedsettings.smtpPort = SMTP poort
+advancedsettings.smtpServer = SMTP server
+advancedsettings.smtpEncryption = SMTP versleutelingsmethode
+advancedsettings.smtpUser = SMTP gebruikersnaam
+advancedsettings.smtpPassword = SMTP wachtwoord
+advancedsettings.smtpEncryption.none = Geen
 
 # personalsettings.jsp
 personalsettings.title = Persoonlijke instellingen voor {0}
diff --git a/libresonic-main/src/main/webapp/WEB-INF/jsp/advancedSettings.jsp b/libresonic-main/src/main/webapp/WEB-INF/jsp/advancedSettings.jsp
index 57106568..d12c1975 100644
--- a/libresonic-main/src/main/webapp/WEB-INF/jsp/advancedSettings.jsp
+++ b/libresonic-main/src/main/webapp/WEB-INF/jsp/advancedSettings.jsp
@@ -41,6 +41,56 @@
         
     
 
+    
+        
+            | + | +                
+                
++ | 
+
+        
+            | + | +                
+                
++ | 
+
+        
+            | + | +                
+                    
+                    
+                    
+
+                    
+                    
+                    
+                
+                
++ | 
+
+        
+            | + | +                
+                
++ | 
+
+        
+            | + | +                
++ | 
+
+    
+