         callback null, false
 
 
-  sendEmail: ({subject, firstName}, callback)->
+  getTextBody = ({firstName, pin, action})->
+
+    templates =
+
+      'verify-account': """
+        Hi #{firstName},
+
+        Welcome to Koding!
+
+        You can use the following code to verify your koding.com account:
+
+          #{pin}
+
+        Have a nice day!
+        --
+        Koding Team
+      """
+
+      'update-email'  : """
+        Hi #{firstName},
+
+        To verify your new e-mail address you can use the following code:
+
+          #{pin}
+
+        Have a nice day!
+        --
+        Koding Team
+      """
+
+      default         : """
+        Hi #{firstName},
+
+        Here’s your koding.com verification code:
+
+          #{pin}
+
+        Have a nice day!
+        --
+        Koding Team
+      """
+
+    return templates[action] or templates.default
+
+
+  sendEmail: ({subject, firstName, action}, callback)->
 
     JMail = require './email'
 

      from    : 'hello@koding.com'
      email   : @email
      subject : subject
      content : @getTextBody firstName, @pin
      force   : yes

    console.log "Pin (#{@pin}) sent to #{@email} for #{@action} action."

    email.save callback


  getTextBody: (firstName, plainPin)->

    """
    Hi #{firstName},

    Here’s your koding.com verification code:

      #{plainPin}

    Have a nice day!
    --
    Koding Team

    """


  @invalidatePin = (options, callback)->


          if createdAt < 20 # min
            if resendIfExists
              confirmation.sendEmail {subject, firstName, action}, callback
            else
              callback if err then err else new PINExistsError \
                "PIN exists and not expired,
