diff --git a/index.php b/index.php
index ec70b9f..0ffa33c 100755
--- a/index.php
+++ b/index.php
@@ -27,7 +27,7 @@
 $TEMPLATE = template_path();
 
 
-function send_confirmation_email(string $mail, object $smtp, string $url)
+function send_confirmation_email(string $mail, object $smtp, string $url, User $user)
 {
     include 'config.php';
     $TEMPLATE = template_path();
@@ -35,8 +35,8 @@
 
     send_mail($mail, $smtp, (object) [
         "subject" => $MAIL_TEMPLATE->subject,
-        "text"    => str_replace("{{url}}", $url, $MAIL_TEMPLATE->text),
-        "html"    => str_replace("{{url}}", $url, $MAIL_TEMPLATE->html)
+        "text"    => replace_all_user_variables($MAIL_TEMPLATE->text, $user, $url),
+        "html"    => replace_all_user_variables($MAIL_TEMPLATE->html, $user, $url)
     ]);
 }
 
@@ -118,6 +118,15 @@
     return $error;
 }
 
+function backup_user_in_session($user)
+{
+    $_SESSION['username'] = $user->user_name;
+    $_SESSION['first_name'] = $user->first_name;
+    $_SESSION['last_name'] = $user->last_name;
+    $_SESSION['email'] = $user->email;
+    $_SESSION['organization'] = $user->organization;
+}
+
 function approve_request($user)
 {
     include 'config.php';
@@ -136,10 +145,10 @@
         $smtp = $FALLBACK_SMTP;
     else
         $smtp = $SMTP;
-    send_confirmation_email($user->email, $smtp, $url);
+    send_confirmation_email($user->email, $smtp, $url, $user);
     $_SESSION['resend'] = generateRandomString(12);
     $_SESSION['token'] = $token;
-    $_SESSION['email'] = $user->email;
+    backup_user_in_session($user);
     $TEMPLATE = template_path();
     include $TEMPLATE . "confirm_your_email.htm";
 }
@@ -288,19 +297,22 @@
         case "resend":
             if (isset($_GET['token']) && isset($_SESSION['resend']) && $_GET['token'] == $_SESSION['resend']) {
                 include $TEMPLATE . "resend_mail.htm";
+                $user = new User($_SESSION["username"], $_SESSION["first_name"], $_SESSION["last_name"], $_SESSION["email"], "", $_SESSION["organization"]);
                 $token = $_SESSION['token'];
                 $url = $BASE_URL . "?type=confirmation&token=" . $token;
                 $smtp = $FALLBACK_SMTP;
                 $address = $_SESSION["email"];
                 if (isset($_SESSION['recover'])) {
                     $url = $BASE_URL . "?type=password_change&token=" . $token;
-                    send_recovery_email($address, $smtp, $url);
+                    send_recovery_email($address, $smtp, $url, $user);
                     unset($_SESSION['recover']);
                 } else
-                    send_confirmation_email($address, $smtp, $url);
+                    send_confirmation_email($address, $smtp, $url, $user);
                 unset($_SESSION['resend']);
                 unset($_SESSION['token']);
-                unset($_SESSION['email']);
+                # unset($_SESSION['email']);
+            } else {
+                echo "<h2>A second email has already been sent to " . $_SESSION['email'] .".</h2>";
             }
             break;
 
diff --git a/templates/email.php b/templates/email.php
index 3033d65..7d61eef 100644
--- a/templates/email.php
+++ b/templates/email.php
@@ -1,9 +1,55 @@
 <?php
+$REGISTRATION_INFORMATION = "
+<h3>Registration information</h3>
+<p>
+<table style='border: 1px solid #e1e4e8; border-collapse: collapse; width: 100%;'>
+<tr>
+<td style='border: 1px solid #e1e4e8; padding: 6px 13px;'>
+<strong>Username</strong>
+</td>
+<td style='border: 1px solid #e1e4e8; padding: 6px 13px;'>
+{{username}}
+</td>
+</tr>
+<tr>
+<td style='border: 1px solid #e1e4e8; padding: 6px 13px;'>
+<strong>Name</strong>
+</td>
+<td style='border: 1px solid #e1e4e8; padding: 6px 13px;'>
+{{full_name}}
+</td>
+</tr>
+<tr>
+<td style='border: 1px solid #e1e4e8; padding: 6px 13px;'>
+<strong>Organization</strong>
+</td>
+<td style='border: 1px solid #e1e4e8; padding: 6px 13px;'>
+{{organization}}
+</td>
+</tr>
+<tr>
+<td style='border: 1px solid #e1e4e8; padding: 6px 13px;'>
+<strong>Email</strong>
+</td>
+<td style='border: 1px solid #e1e4e8; padding: 6px 13px;'>
+{{email}}
+</td>
+</tr>
+</table>
+</p>
+";
+
 $MAIL_TEMPLATE = (object)[
         "subject" => "[" . $SERVICE_ACRONYM . "] Confirm your email address",
         "text"    => "To complete your registration please paste this to your browser: {{url}}",
         "html" => "<html><body>
-                <p>Almost there! Click on the confirm button below to confirm your email address and to complete your " . $SERVICE_ACRONYM . " registration</p>
+                <p>Dear {{full_name}},</p>
+                <p>Please check the information below and click on the confirm button to complete your " . $SERVICE_ACRONYM . " registration:</p>"
+                . $REGISTRATION_INFORMATION . "
+                <p>
+                If you did not request this registration, please ignore this email.
+                If you find errors in the information above, please ignore this email and repeat the registration process.
+                </p>
                 <a style='display: inline-block; outline: 0; cursor: pointer;
                 padding: 5px 16px;
                 font-size: 14px;
@@ -25,6 +71,8 @@
                     transition-duration: 0.1s;
                 }
             ' href='{{url}}'>Confirm " . $SERVICE_ACRONYM . " registration</a>
+            <p>Best regards,</p>
+                <p>" . $SERVICE_ACRONYM . " team</p>
         </body></html>"
 ];
 
diff --git a/templates/register.htm b/templates/register.htm
index 87753f8..c01828b 100644
--- a/templates/register.htm
+++ b/templates/register.htm
@@ -157,7 +157,7 @@
             </div>
         </div>
         <input pattern="[^\s]{<?php echo $CAPTCHA_LENGTH; ?>,}" required
-            title="Please fill the captcha. It has 5 characters" name="captcha" type="text" id="form3Example6"
+            title="Please fill the captcha. It has <?php echo $CAPTCHA_LENGTH; ?> characters" name="captcha" type="text" id="form3Example6"
             class="form-control" placeholder="Type what you see on the image above" />
             <div class="invalid-feedback">
                 Type what you see on the image above.
diff --git a/templates/resend_mail.htm b/templates/resend_mail.htm
index be5a7c6..7f8557d 100644
--- a/templates/resend_mail.htm
+++ b/templates/resend_mail.htm
@@ -1 +1 @@
-<h2>Another email was sent!</h2>
+<h2>Another email has been sent to <?php echo $_SESSION['email']; ?>!</h2>
diff --git a/utils.php b/utils.php
index 5c2f399..d50cc24 100644
--- a/utils.php
+++ b/utils.php
@@ -53,3 +53,16 @@
 
     return $TEMPLATE;
 }
+
+function replace_all_user_variables(string $string, User $user, string $url)
+{
+    $string = str_replace("{{url}}", $url, $string);
+    $string = str_replace("{{full_name}}", $user->first_name . " " . $user->last_name, $string);
+    $string = str_replace("{{fullname}}", $user->first_name . " " . $user->last_name, $string);
+    $string = str_replace("{{first_name}}", $user->first_name, $string);
+    $string = str_replace("{{last_name}}", $user->last_name, $string);
+    $string = str_replace("{{email}}", $user->email, $string);
+    $string = str_replace("{{organization}}", $user->organization, $string);
+    $string = str_replace("{{username}}", $user->user_name, $string);
+    return $string;
+}
\ No newline at end of file
