diff --git a/transporte/models.py b/transporte/models.py
index 6d26ca1ff851c1baccf02eaa0335e841209c6bdb..c42d4c48518d089512514f775048b5abf9647cd2 100644
--- a/transporte/models.py
+++ b/transporte/models.py
@@ -9,6 +9,8 @@ from flask_mail import Message
 from itsdangerous import URLSafeTimedSerializer as Serializer
 from itsdangerous import BadSignature, SignatureExpired
 
+from DNS.Base import TimeoutError as DNSTimeoutError
+
 
 class User(UserMixin, db.Model):
     id = db.Column(db.Integer, primary_key=True)
@@ -25,13 +27,18 @@ class User(UserMixin, db.Model):
                 Markup('<b>DEBUG:</b> <a href={url}>{url}</a>'.format(
                     url=url_for('login_with_token', token=token, _external=True))),
                 'warning')
-            return
+            return token
 
         # send login email
         msg = Message('Ohai!', recipients=[self.login])
         msg.body = 'Here is your login link: {}'.format(url_for('login_with_token', token=token, _external=True))
 
-        mail.send(msg)
+        try:
+            mail.send(msg)
+        except DNSTimeoutError:
+            return None
+
+        return token
 
     @staticmethod
     def verify_login_token(token):
diff --git a/transporte/views.py b/transporte/views.py
index 0198b2c0a6cc083d39398cf43d3a3b2863764481..4ef34c9d7a47825cd3a857959a1b1c46b2aca461 100644
--- a/transporte/views.py
+++ b/transporte/views.py
@@ -67,9 +67,11 @@ def login():
                 db.session.commit()
 
             # create token
-            user.create_token()
-
-            flash('Check your inbox!')
+            token = user.create_token()
+            if token is not None:
+                flash('Check your inbox!')
+            else:
+                loginform.login.errors.append('Error creating token!')
         else:
             loginform.login.errors.append('Please enter valid email address!')