diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb
index 7a45d186cd7dfe8ff93a51ab13d54825dbd1fad1..27ba92eeb5d44db845b7fbda0a9e34a2b3e4db89 100644
--- a/app/controllers/users_controller.rb
+++ b/app/controllers/users_controller.rb
@@ -21,6 +21,7 @@ class UsersController < ApplicationController
     params[:user].delete(:password) if params[:user][:password].blank?
     params[:user].delete(:password_confirmation) if params[:user][:password].blank? and params[:user][:password_confirmation].blank?
     params[:user].delete(:language) if params[:user][:language].blank?
+    params[:user].delete(:email) if params[:user][:email].blank?
 
     # change email notifications
     if params[:user][:disable_mail]
@@ -39,6 +40,13 @@ class UsersController < ApplicationController
       else
         flash[:error] = I18n.t 'users.update.language_not_changed'
       end
+    # change email
+    elsif params[:user][:email]
+      if @user.update_attributes(:email => params[:user][:email])
+        flash[:notice] = I18n.t 'users.update.email_changed'
+      else
+        flash[:error] = I18n.t 'users.update.email_not_changed'
+      end
     end
 
     redirect_to edit_user_path(@user)
diff --git a/app/models/user.rb b/app/models/user.rb
index b5496f47d04889e1cfb023908fcb414eed80b5d3..46eb9439249f4172e574e8750fc2d663ace8621e 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -61,7 +61,7 @@ class User
     person.save if person
   end
 
-  attr_accessible :getting_started, :password, :password_confirmation, :language, :disable_mail
+  attr_accessible :getting_started, :password, :password_confirmation, :language, :disable_mail, :email
 
   def strip_and_downcase_username
     if username.present?
diff --git a/app/views/users/edit.html.haml b/app/views/users/edit.html.haml
index 3a813eb82ef8ffe3e46f6067793bce00d7a7694e..887b8ad29ebfb7ec059d0990fe2cdcaab14857df 100644
--- a/app/views/users/edit.html.haml
+++ b/app/views/users/edit.html.haml
@@ -37,8 +37,12 @@
   .span-8.last
     %h3
       = t('.your_email')
-    %p
-      = current_user.email
+    = form_for @user do |f|
+      = f.error_messages
+      %p
+        = f.label :email, current_user.email
+        = f.text_field :email
+        = f.submit t('.change_email')
 
   %br
   %br
diff --git a/config/locales/diaspora/en.yml b/config/locales/diaspora/en.yml
index 4f42bb26105421da0a5230042fa9c618d464924c..ab756753429ded9c103fc3ae7cbbe12f216f46ee 100644
--- a/config/locales/diaspora/en.yml
+++ b/config/locales/diaspora/en.yml
@@ -176,6 +176,7 @@ en:
           close_account: "Close Account"
           change_language: "Change Language"
           change_password: "Change Password"
+          change_email: "Change Email"
           new_password: "New Password"
           download_xml: "download my xml"
           download_photos: "download my photos"
@@ -220,6 +221,8 @@ en:
           language_changed: "Language Changed"
           language_not_changed: "Language Change Failed"
           email_notifications_changed: "Language Change Failed"
+          email_changed: "Email Changed"
+          email_not_changed: "Email Change Failed"
       public:
           does_not_exist: "User %{username} does not exist!"
   comments: