diff --git a/yesod-form/Yesod/Form/Fields.hs b/yesod-form/Yesod/Form/Fields.hs
index a2a93d89..7917ce27 100644
--- a/yesod-form/Yesod/Form/Fields.hs
+++ b/yesod-form/Yesod/Form/Fields.hs
@@ -60,6 +60,10 @@ import Text.Blaze (ToMarkup (toMarkup), preEscapedToMarkup, unsafeByteString)
import Text.Cassius
import Data.Time (Day, TimeOfDay(..))
import qualified Text.Email.Validate as Email
+#if MIN_VERSION_email_validate(1, 0, 0)
+import Data.Text.Encoding (encodeUtf8, decodeUtf8With)
+import Data.Text.Encoding.Error (lenientDecode)
+#endif
import Network.URI (parseURI)
import Database.Persist (PersistField)
import Database.Persist.Store (Entity (..))
@@ -291,9 +295,16 @@ timeParser = do
emailField :: RenderMessage master FormMessage => Field sub master Text
emailField = Field
{ fieldParse = parseHelper $
+#if MIN_VERSION_email_validate(1, 0, 0)
+ \s ->
+ case Email.canonicalizeEmail $ encodeUtf8 s of
+ Just e -> Right $ decodeUtf8With lenientDecode e
+ Nothing -> Left $ MsgInvalidEmail s
+#else
\s -> if Email.isValid (unpack s)
then Right s
else Left $ MsgInvalidEmail s
+#endif
, fieldView = \theId name attrs val isReq -> toWidget [hamlet|
$newline never
diff --git a/yesod-form/yesod-form.cabal b/yesod-form/yesod-form.cabal
index fd9a031b..a0d2a801 100644
--- a/yesod-form/yesod-form.cabal
+++ b/yesod-form/yesod-form.cabal
@@ -1,5 +1,5 @@
name: yesod-form
-version: 1.2.1
+version: 1.2.1.1
license: MIT
license-file: LICENSE
author: Michael Snoyman