packages feed

aws-ses-easy-0.0.0: library/Aws/Ses/Easy/Email.hs

{-# LANGUAGE OverloadedStrings #-}
module Aws.Ses.Easy.Email
  ( Email(..)
  , fromHtml
  , center
  , blackFont
  , fromEmail
  ) where

import qualified Data.Text.Lazy as TL
import qualified Network.AWS.SES as Aws
import Control.Lens
import Data.Text (Text)
import Lucid
import Lucid.Base

data Email = Email
  { emailTo :: [Text]
  , emailFrom :: Text
  , emailTitle :: Text
  , emailBody :: Html ()
  } deriving (Show)

fromHtml :: Html a -> Text
fromHtml = TL.toStrict . renderText

center :: Html () -> Html ()
center chilens = do
    table_ [width_ "100%", makeAttribute "border" "0", makeAttribute "cellspacing" "0", makeAttribute "cellpadding" "0"] $
      tr_ $
        td_ [makeAttribute "align" "center"] $
          chilens

blackFont :: [Attribute] -> Html () -> Html ()
blackFont attributes chilens = term "font" (makeAttribute "color" "black" : attributes) chilens

fromEmail :: Email -> Aws.SendEmail
fromEmail e = Aws.sendEmail from' dest msg
  where
    from' = emailFrom e
    dest = Aws.destination & Aws.dToAddresses .~ (emailTo e)
    content = Aws.content $ fromHtml (emailBody e)
    title = Aws.content $ emailTitle e
    msg = Aws.message title (Aws.body & Aws.bHTML .~ (Just content))