diff --git a/mo/web/acct.py b/mo/web/acct.py
index 5aeb7acbe4296c973249236fed94000361cc0e09..72ee25fe7615756ae900e03c5c7b5b45798f0148 100644
--- a/mo/web/acct.py
+++ b/mo/web/acct.py
@@ -107,9 +107,27 @@ def incarnate(id):
     return login_and_redirect(new_user, flash_msg='Převtělení proběhlo')
 
 
-@app.route('/acct/settings')
+class AcctSettingsForm(FlaskForm):
+    email_notify = wtforms.BooleanField('Posílat e-mailové notifikace')
+    submit = wtforms.SubmitField('Nastavit')
+
+
+@app.route('/acct/settings', methods=('GET', 'POST'))
 def user_settings():
     sess = db.get_session()
+    user = g.user
+
+    form = AcctSettingsForm()
+    if not form.submit.data:
+        form.email_notify.data = user.email_notify
+
+    if form.validate_on_submit():
+        user.email_notify = form.email_notify.data
+        app.logger.info(f'Settings: Změněny preference uživatele #{user.user_id}: {db.get_object_changes(user)}')
+        # Do databázového logu nezapisujeme, nemá smysl logovat prkotiny.
+        sess.commit()
+        flash('Nastavení změněno.', 'success')
+        return redirect(url_for('user_settings'))
 
     roles = (sess.query(db.UserRole)
              .filter_by(user_id=g.user.user_id)
@@ -121,10 +139,13 @@ def user_settings():
     else:
         pant = sess.query(db.Participant).get((g.user.user_id, mo.current_year))
 
-    return render_template('settings.html', user=g.user, pant=pant, roles=roles, roles_by_type=mo.rights.roles_by_type)
+    return render_template(
+        'settings.html',
+        user=g.user, pant=pant, roles=roles, roles_by_type=mo.rights.roles_by_type,
+        form=form)
 
 
-class SettingsForm(FlaskForm):
+class PersonalSettingsForm(FlaskForm):
     email = mo_fields.Email(validators=[validators.DataRequired()])
     current_passwd = mo_fields.Password('Aktuální heslo', validators=[validators.DataRequired()])
     new_passwd = mo_fields.NewPassword(
@@ -143,7 +164,7 @@ def user_settings_personal():
     sess = db.get_session()
     user = g.user
 
-    form = SettingsForm()
+    form = PersonalSettingsForm()
     if not form.submit.data:
         form.email.data = user.email
 
diff --git a/mo/web/templates/settings.html b/mo/web/templates/settings.html
index d5215f1e8cee5a79d54cca7d2d3dcb00fe036008..29470c2e99b5fd2f6736897f51d2036b8c22c58a 100644
--- a/mo/web/templates/settings.html
+++ b/mo/web/templates/settings.html
@@ -1,4 +1,5 @@
 {% extends "base.html" %}
+{% import "bootstrap/wtf.html" as wtf %}
 {% block title %}Uživatel {{ user.full_name() }}{% endblock %}
 {% block body %}
 
@@ -20,6 +21,19 @@
 	<p>Pokud potřebujete změnit jiné údaje, ozvěte se svému učiteli nebo garantovi.
 	Neuspějete-li u nich, napište správci OSMO (kontakt viz patička stránky).
 
+	<h3>Nastavení</h3>
+
+	<form action="" method="post" class="form" role="form">
+	{{ form.csrf_token }}
+
+	<div class='form-group'>
+	{{ wtf.form_field(form.email_notify, form_type='simple') }}
+	</div>
+
+	{{ wtf.form_field(form.submit, form_type='simple', button_map={'submit': 'primary'}) }}
+
+	</form>
+
 {% if user.is_admin or user.is_org %}
 
 	<h3>Práva</h3>