diff --git a/inc/auth.php b/inc/auth.php
index 96b80e19ea46cd4c8e87f8cced89d7ec85217db7..a1c92ec804a503ba876a74f7251167885305b2a2 100644
--- a/inc/auth.php
+++ b/inc/auth.php
@@ -1024,7 +1024,7 @@ function updateprofile() {
 
     if($conf['profileconfirm']) {
         if(!$auth->checkPass($_SERVER['REMOTE_USER'], $INPUT->post->str('oldpass'))) {
-            msg($lang['badlogin'], -1);
+            msg($lang['badpassconfirm'], -1);
             return false;
         }
     }
diff --git a/inc/html.php b/inc/html.php
index fb39fcb3c9b8ee957b1c6525b9db8863a4f1ada7..53f4c45ffefbb6219e702d92a7632fc2669aa53d 100644
--- a/inc/html.php
+++ b/inc/html.php
@@ -1318,19 +1318,22 @@ function html_register(){
     global $conf;
     global $INPUT;
 
+    $base_attrs = array('size'=>50,'required'=>'required');
+    $email_attrs = $base_attrs + array('type'=>'email','class'=>'edit');
+
     print p_locale_xhtml('register');
     print '<div class="centeralign">'.NL;
     $form = new Doku_Form(array('id' => 'dw__register'));
     $form->startFieldset($lang['btn_register']);
     $form->addHidden('do', 'register');
     $form->addHidden('save', '1');
-    $form->addElement(form_makeTextField('login', $INPUT->post->str('login'), $lang['user'], '', 'block', array('size'=>'50')));
+    $form->addElement(form_makeTextField('login', $INPUT->post->str('login'), $lang['user'], '', 'block', $base_attrs));
     if (!$conf['autopasswd']) {
-        $form->addElement(form_makePasswordField('pass', $lang['pass'], '', 'block', array('size'=>'50')));
-        $form->addElement(form_makePasswordField('passchk', $lang['passchk'], '', 'block', array('size'=>'50')));
+        $form->addElement(form_makePasswordField('pass', $lang['pass'], '', 'block', $base_attrs));
+        $form->addElement(form_makePasswordField('passchk', $lang['passchk'], '', 'block', $base_attrs));
     }
-    $form->addElement(form_makeTextField('fullname', $INPUT->post->str('fullname'), $lang['fullname'], '', 'block', array('size'=>'50')));
-    $form->addElement(form_makeTextField('email', $INPUT->post->str('email'), $lang['email'], '', 'block', array('size'=>'50')));
+    $form->addElement(form_makeTextField('fullname', $INPUT->post->str('fullname'), $lang['fullname'], '', 'block', $base_attrs));
+    $form->addElement(form_makeField('email','email', $INPUT->post->str('email'), $lang['email'], '', 'block', $email_attrs));
     $form->addElement(form_makeButton('submit', '', $lang['btn_register']));
     $form->endFieldset();
     html_form('register', $form);
@@ -1353,10 +1356,10 @@ function html_updateprofile(){
     global $auth;
 
     print p_locale_xhtml('updateprofile');
+    print '<div class="centeralign">'.NL;
 
     $fullname = $INPUT->post->str('fullname', $INFO['userinfo']['name'], true);
     $email = $INPUT->post->str('email', $INFO['userinfo']['mail'], true);
-    print '<div class="centeralign">'.NL;
     $form = new Doku_Form(array('id' => 'dw__register'));
     $form->startFieldset($lang['profile']);
     $form->addHidden('do', 'profile');
@@ -1365,9 +1368,9 @@ function html_updateprofile(){
     $attr = array('size'=>'50');
     if (!$auth->canDo('modName')) $attr['disabled'] = 'disabled';
     $form->addElement(form_makeTextField('fullname', $fullname, $lang['fullname'], '', 'block', $attr));
-    $attr = array('size'=>'50');
+    $attr = array('size'=>'50', 'class'=>'edit');
     if (!$auth->canDo('modMail')) $attr['disabled'] = 'disabled';
-    $form->addElement(form_makeTextField('email', $email, $lang['email'], '', 'block', $attr));
+    $form->addElement(form_makeField('email','email', $email, $lang['email'], '', 'block', $attr));
     $form->addElement(form_makeTag('br'));
     if ($auth->canDo('modPass')) {
         $form->addElement(form_makePasswordField('newpass', $lang['newpass'], '', 'block', array('size'=>'50')));
@@ -1375,10 +1378,11 @@ function html_updateprofile(){
     }
     if ($conf['profileconfirm']) {
         $form->addElement(form_makeTag('br'));
-        $form->addElement(form_makePasswordField('oldpass', $lang['oldpass'], '', 'block', array('size'=>'50')));
+        $form->addElement(form_makePasswordField('oldpass', $lang['oldpass'], '', 'block', array('size'=>'50', 'required' => 'required')));
     }
     $form->addElement(form_makeButton('submit', '', $lang['btn_save']));
     $form->addElement(form_makeButton('reset', '', $lang['btn_reset']));
+
     $form->endFieldset();
     html_form('updateprofile', $form);
     print '</div>'.NL;
diff --git a/lib/plugins/config/settings/config.class.php b/lib/plugins/config/settings/config.class.php
index 8eb99284ddb3bc2e4ad8113ebce8b0a3cd7f3ae4..63be3a7261fb071910e354952627dd38563d9351 100644
--- a/lib/plugins/config/settings/config.class.php
+++ b/lib/plugins/config/settings/config.class.php
@@ -717,6 +717,29 @@ if (!class_exists('setting_email')) {
         $this->_local = $input;
         return true;
     }
+    function html(&$plugin, $echo=false) {
+        $value = '';
+        $disable = '';
+
+        if ($this->is_protected()) {
+          $value = $this->_protected;
+          $disable = 'disabled="disabled"';
+        } else {
+          if ($echo && $this->_error) {
+            $value = $this->_input;
+          } else {
+            $value = is_null($this->_local) ? $this->_default : $this->_local;
+          }
+        }
+
+        $multiple = $this->_multiple ? 'multiple="multiple"' : '';
+        $key = htmlspecialchars($this->_key);
+        $value = htmlspecialchars($value);
+
+        $label = '<label for="config___'.$key.'">'.$this->prompt($plugin).'</label>';
+        $input = '<input id="config___'.$key.'" name="config['.$key.']" type="email" class="edit" value="'.$value.'" '.$multiple.' '.$disable.'/>';
+        return array($label,$input);
+    }
   }
 }
 
diff --git a/lib/plugins/usermanager/admin.php b/lib/plugins/usermanager/admin.php
index 445836a50da8539a38be308c6d1432d8f03fe66b..ca4c6a650745373953792b7421e737be0a354f60 100644
--- a/lib/plugins/usermanager/admin.php
+++ b/lib/plugins/usermanager/admin.php
@@ -311,6 +311,9 @@ class admin_plugin_usermanager extends DokuWiki_Admin_Plugin {
         if($name == 'userpass'){
             $fieldtype = 'password';
             $autocomp  = 'autocomplete="off"';
+        }elseif($name == 'usermail'){
+            $fieldtype = 'email';
+            $autocomp  = '';
         }else{
             $fieldtype = 'text';
             $autocomp  = '';