diff --git a/email-validate.cabal b/email-validate.cabal
--- a/email-validate.cabal
+++ b/email-validate.cabal
@@ -1,5 +1,5 @@
 name:           email-validate
-version:        2.1.3
+version:        2.2.0
 license:        BSD3
 license-file:   LICENSE
 author:         George Pollard <porges@porg.es>
@@ -19,7 +19,7 @@
 source-repository this
     type: git
     location: git://github.com/Porges/email-validate-hs.git
-    tag: v2.1.3
+    tag: v2.2.0
 
 library
     build-depends:
diff --git a/src/Text/Email/Parser.hs b/src/Text/Email/Parser.hs
--- a/src/Text/Email/Parser.hs
+++ b/src/Text/Email/Parser.hs
@@ -5,6 +5,7 @@
     , localPart
     , domainPart
     , EmailAddress
+    , unsafeEmailAddress
     , toByteString
     )
 where
@@ -24,6 +25,13 @@
 -- | Represents an email address.
 data EmailAddress = EmailAddress ByteString ByteString
     deriving (Eq, Ord, Data, Typeable, Generic)
+
+-- | Creates an email address without validating it.
+--   You should only use this when reading data from
+--   somewhere it has already been validated (e.g. a
+--   database).
+unsafeEmailAddress :: ByteString -> ByteString -> EmailAddress
+unsafeEmailAddress = EmailAddress
 
 instance Show EmailAddress where
     show = show . toByteString
diff --git a/src/Text/Email/Validate.hs b/src/Text/Email/Validate.hs
--- a/src/Text/Email/Validate.hs
+++ b/src/Text/Email/Validate.hs
@@ -1,21 +1,23 @@
 module Text.Email.Validate
-	( isValid
-	, validate
-	, emailAddress
-	, canonicalizeEmail
-	, EmailAddress -- re-exported
-	, localPart
-	, domainPart
-	, toByteString
-	)
+        ( isValid
+        , validate
+        , emailAddress
+        , canonicalizeEmail
+        , EmailAddress -- re-exported
+        , unsafeEmailAddress
+        , localPart
+        , domainPart
+        , toByteString
+        )
 where
 
-import Control.Applicative ((<*))
+import           Control.Applicative        ((<*))
 
-import Data.ByteString (ByteString)
-import Data.Attoparsec.ByteString (parseOnly, endOfInput)
+import           Data.Attoparsec.ByteString (endOfInput, parseOnly)
+import           Data.ByteString            (ByteString)
 
-import Text.Email.Parser (EmailAddress, toByteString, addrSpec, localPart, domainPart)
+import           Text.Email.Parser          (EmailAddress(..), addrSpec, domainPart,
+                                             localPart, toByteString, unsafeEmailAddress)
 
 -- | Smart constructor for an email address
 emailAddress :: ByteString -> Maybe EmailAddress
