mail-pool 2.2.3 → 2.3.0
raw patch · 3 files changed
+70/−39 lines, 3 filesdep −timedep ~HaskellNetdep ~basedep ~resource-pool
Dependencies removed: time
Dependency ranges changed: HaskellNet, base, resource-pool
Files
- Changelog.md +7/−0
- mail-pool.cabal +50/−24
- src/Network/Mail/Pool.hs +13/−15
Changelog.md view
@@ -1,5 +1,12 @@ # Changelog mailpool +# Release 2.3.0 2024.08.12 ++ set default to starttls+ + apparantly mailgun requires it by default now+ + this change is what makes it a minor release++ upgrade to new data-pool++ # Release 2.2.3 2020.12.03 + No I need to fix haskell net
mail-pool.cabal view
@@ -1,13 +1,7 @@-cabal-version: 1.12---- This file has been generated from package.yaml by hpack version 0.31.1.------ see: https://github.com/sol/hpack------ hash: f2f85cd494ec1e2df7247b76c890d08c48435918d7d88f2bc0d928cd0f09596d+cabal-version: 3.0 name: mail-pool-version: 2.2.3+version: 2.3.0 synopsis: Preconfigured email connection pool on top of smtp. description: Email helper functions with some sane defaults such as a resource pool and cli support category: Email@@ -22,23 +16,63 @@ extra-source-files: Readme.md LICENSE++extra-doc-files: Changelog.md source-repository head type: git location: https://github.com/jappeace/email-pool +common common-options+ default-extensions: + EmptyCase+ FlexibleContexts+ FlexibleInstances+ InstanceSigs+ MultiParamTypeClasses+ LambdaCase+ MultiWayIf+ NamedFieldPuns+ TupleSections+ DeriveFoldable+ DeriveFunctor+ DeriveGeneric+ DeriveLift+ DeriveTraversable+ DerivingStrategies+ GeneralizedNewtypeDeriving+ StandaloneDeriving+ OverloadedStrings+ TypeApplications+ NumericUnderscores++ ghc-options:+ -O2 -Wall -Wincomplete-uni-patterns+ -Wincomplete-record-updates -Widentities -Wredundant-constraints+ -Wcpp-undef -fwarn-tabs -Wpartial-fields+ -fdefer-diagnostics -Wunused-packages+ -fenable-th-splice-warnings+ -fno-omit-yields+ -threaded++ build-depends:+ base >=4.9.1.0 && <4.21.0++ default-language: Haskell2010+ library+ import: common-options exposed-modules: Network.Mail.Pool other-modules: Paths_mail_pool+ autogen-modules:+ Paths_mail_pool hs-source-dirs: src- default-extensions: EmptyCase FlexibleContexts FlexibleInstances InstanceSigs MultiParamTypeClasses LambdaCase MultiWayIf NamedFieldPuns TupleSections DeriveFoldable DeriveFunctor DeriveGeneric DeriveLift DeriveTraversable DerivingStrategies GeneralizedNewtypeDeriving StandaloneDeriving OverloadedStrings TypeApplications- ghc-options: -Wall -Wcompat -Wincomplete-uni-patterns -Wredundant-constraints -Wincomplete-record-updates -Widentities build-depends:- HaskellNet >=0.5.1+ HaskellNet >=0.6.0 && < 1.0 , HaskellNet-SSL >=0.3.4.1 , aeson >=1.4 , base >=4.7 && <5@@ -46,28 +80,20 @@ , mime-mail >=0.4.14 , network >=2.8.0.0 , optparse-applicative >=0.14.3.0- , resource-pool >=0.2.3.2- , time >=1.8.0.2+ , resource-pool >=0.4.0.0 && < 1.0 default-language: Haskell2010 executable exe+ import: common-options main-is: mail.hs other-modules: Paths_mail_pool+ autogen-modules:+ Paths_mail_pool hs-source-dirs: app- default-extensions: EmptyCase FlexibleContexts FlexibleInstances InstanceSigs MultiParamTypeClasses LambdaCase MultiWayIf NamedFieldPuns TupleSections DeriveFoldable DeriveFunctor DeriveGeneric DeriveLift DeriveTraversable DerivingStrategies GeneralizedNewtypeDeriving StandaloneDeriving OverloadedStrings TypeApplications- ghc-options: -Wall -Wcompat -Wincomplete-uni-patterns -Wredundant-constraints -Wincomplete-record-updates -Widentities -threaded -rtsopts -with-rtsopts=-N build-depends:- HaskellNet >=0.5.1- , HaskellNet-SSL >=0.3.4.1- , aeson >=1.4- , base >=4.7 && <5- , mail-pool- , microlens >=0.4.10+ mail-pool , mime-mail >=0.4.14- , network >=2.8.0.0 , optparse-applicative >=0.14.3.0- , resource-pool >=0.2.3.2- , time >=1.8.0.2 default-language: Haskell2010
src/Network/Mail/Pool.hs view
@@ -16,12 +16,12 @@ , openTls , openPlain , openTls'+ , createPoolConfig -- ** optparse applicative , emailOptions -- ** lenses , poolCred , poolConnf- , poolStripes , poolUnused , poolStripeMax , smtpHost@@ -38,7 +38,6 @@ import Control.Monad.IO.Class import Data.Aeson import Data.Pool as X-import Data.Time (NominalDiffTime) import Lens.Micro import Network.HaskellNet.SMTP as X import Network.HaskellNet.SMTP.SSL as X@@ -83,10 +82,8 @@ _poolCred :: SmtpCred -- | allows overriding of the opening function, for example 'openPlain' or 'openTls' , _poolConnf :: SmtpCred -> IO SMTPConnection- -- | stripes, see docs: https://hackage.haskell.org/package/resource-pool-0.2.3.2/docs/Data-Pool.html- , _poolStripes :: Int -- | specify how long connections are kept open.- , _poolUnused :: NominalDiffTime+ , _poolUnused :: Double -- | how many connections per stripe. , _poolStripeMax :: Int }@@ -95,9 +92,7 @@ poolCred = lens _poolCred (\a b -> a{_poolCred=b}) poolConnf :: Lens' PoolSettings (SmtpCred -> IO SMTPConnection) poolConnf = lens _poolConnf (\a b -> a{_poolConnf=b})-poolStripes :: Lens' PoolSettings Int-poolStripes = lens _poolStripes (\a b -> a{_poolStripes=b})-poolUnused :: Lens' PoolSettings NominalDiffTime+poolUnused :: Lens' PoolSettings Double poolUnused = lens _poolUnused (\a b -> a{_poolUnused=b}) poolStripeMax :: Lens' PoolSettings Int poolStripeMax = lens _poolStripeMax (\a b -> a{_poolStripeMax=b})@@ -106,8 +101,7 @@ defSettings :: SmtpCred -> PoolSettings defSettings cred = PoolSettings { _poolCred = cred- , _poolConnf = openPlain- , _poolStripes = 1+ , _poolConnf = openTls , _poolUnused = 60 , _poolStripeMax = 5 }@@ -126,17 +120,21 @@ -- | Construct a connection pool from settings. smtpPool :: PoolSettings -> IO (Pool SMTPConnection)-smtpPool smtp =- createPool+smtpPool =+ newPool . createPoolConfig++-- | allows manipulation of the underlying resourcepool config+createPoolConfig :: PoolSettings -> PoolConfig SMTPConnection+createPoolConfig smtp =+ defaultPoolConfig (do conn <- smtp ^. poolConnf $ smtp ^. poolCred authorize conn (smtp ^. poolCred) pure conn ) closeSMTP- (smtp ^. poolStripes) (smtp ^. poolUnused)- 5+ (smtp ^. poolStripeMax ) handleAny :: (SomeException -> IO a) -> IO a -> IO a handleAny = handle@@ -181,4 +179,4 @@ -- | Send a 'Mail' with help of a connection pool. sendEmail :: MonadIO m => Pool SMTPConnection -> Mail -> m ()-sendEmail pool = liftIO . withResource pool . sendMimeMail2+sendEmail pool = liftIO . withResource pool . sendMail