diff --git a/__init__.py b/__init__.py
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..94998f091d6ab9e44e8eb0af78c301b93b4db6a9 100644
--- a/__init__.py
+++ b/__init__.py
@@ -0,0 +1,4 @@
+# Copyright (C) 2018-2020 by BDE ENS Paris-Saclay
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+default_app_config = 'scripts.apps.ScriptsConfig'
diff --git a/apps.py b/apps.py
new file mode 100644
index 0000000000000000000000000000000000000000..1b6a5d5b818216b4f357a258757bff35ba5d3b7d
--- /dev/null
+++ b/apps.py
@@ -0,0 +1,14 @@
+# Copyright (C) 2018-2020 by BDE ENS Paris-Saclay
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+from django.apps import AppConfig
+from django.core.signals import got_request_exception
+
+
+class ScriptsConfig(AppConfig):
+    name = 'scripts'
+
+    def ready(self):
+        from . import signals
+        print("scripts are ready")
+        got_request_exception.connect(signals.send_mail_on_exception)
diff --git a/signals.py b/signals.py
new file mode 100644
index 0000000000000000000000000000000000000000..124068d763be9fbb665b0a2e9154f6931e9a11b2
--- /dev/null
+++ b/signals.py
@@ -0,0 +1,38 @@
+# Copyright (C) 2018-2020 by BDE ENS Paris-Saclay
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+import os
+import sys
+
+from django.conf import settings
+from django.core.mail import send_mail
+from django.template.loader import render_to_string
+from django.views.debug import ExceptionReporter
+
+
+def send_mail_on_exception(request, **kwargs):
+    """
+    When an error occurs on the Note Kfet, a mail is automatically sent to the webmasters.
+    """
+
+    if settings.DEBUG:
+        # Don't need to send a mail in debug mode, errors are already displayed in console and in the response view.
+        return
+
+    try:
+        exc_info = sys.exc_info()
+        exc_type = exc_info[0]
+        exc = exc_info[1]
+        tb = exc_info[2]
+        reporter = ExceptionReporter(request=request, exc_type=exc_type, exc_value=exc, tb=tb)
+
+        note_sender = os.getenv("NOTE_MAIL", "notekfet@example.com")
+        webmaster = os.getenv("WEBMASTER_MAIL", "notekfet@example.com")
+
+        message = render_to_string('scripts/mail-error500.txt', context={"error": reporter.get_traceback_text()})
+        message_html = render_to_string('scripts/mail-error500.html', context={"error": reporter.get_traceback_html()})
+
+        send_mail("Erreur dans la Note Kfet", message, note_sender, [webmaster], html_message=message_html)
+    except BaseException as e:
+        sys.stderr.write("Une erreur est survenue lors de l'envoi d'un mail, pour signaler une erreur.")
+        raise e