Add doSMTP* functions to match HaskellNet
These are quite useful helpers to stop you from forgetting to close the connection (like I did).
This commit is contained in:
parent
849619cab8
commit
a5e240859c
@ -3,6 +3,10 @@ module Network.HaskellNet.SMTP.SSL
|
|||||||
, connectSMTPSSLPort
|
, connectSMTPSSLPort
|
||||||
, connectSMTPSTARTTLS
|
, connectSMTPSTARTTLS
|
||||||
, connectSMTPSTARTTLSPort
|
, connectSMTPSTARTTLSPort
|
||||||
|
, doSMTPSSL
|
||||||
|
, doSMTPSSLPort
|
||||||
|
, doSMTPSTARTTLS
|
||||||
|
, doSMTPSTARTTLSPort
|
||||||
) where
|
) where
|
||||||
|
|
||||||
import Network.Socket.Internal (PortNumber)
|
import Network.Socket.Internal (PortNumber)
|
||||||
@ -14,6 +18,7 @@ import Network.BSD (getHostName)
|
|||||||
|
|
||||||
import qualified Data.ByteString.Char8 as B
|
import qualified Data.ByteString.Char8 as B
|
||||||
|
|
||||||
|
import Control.Exception
|
||||||
import Control.Monad
|
import Control.Monad
|
||||||
import Data.IORef
|
import Data.IORef
|
||||||
|
|
||||||
@ -64,3 +69,18 @@ prefixedGetLine :: IORef [B.ByteString] -> IO B.ByteString -> IO B.ByteString
|
|||||||
prefixedGetLine prefix rawGetLine = readIORef prefix >>= deliverLine
|
prefixedGetLine prefix rawGetLine = readIORef prefix >>= deliverLine
|
||||||
where deliverLine [] = rawGetLine
|
where deliverLine [] = rawGetLine
|
||||||
deliverLine (l:ls) = writeIORef prefix ls >> return l
|
deliverLine (l:ls) = writeIORef prefix ls >> return l
|
||||||
|
|
||||||
|
bracketSMTP :: IO SMTPConnection -> (SMTPConnection -> IO a) -> IO a
|
||||||
|
bracketSMTP = flip bracket closeSMTP
|
||||||
|
|
||||||
|
doSMTPSSL :: String -> (SMTPConnection -> IO a) -> IO a
|
||||||
|
doSMTPSSL host = bracketSMTP $ connectSMTPSSL host
|
||||||
|
|
||||||
|
doSMTPSSLPort :: String -> PortNumber -> (SMTPConnection -> IO a) -> IO a
|
||||||
|
doSMTPSSLPort host port = bracketSMTP $ connectSMTPSSLPort host port
|
||||||
|
|
||||||
|
doSMTPSTARTTLS :: String -> (SMTPConnection -> IO a) -> IO a
|
||||||
|
doSMTPSTARTTLS host = bracketSMTP $ connectSMTPSTARTTLS host
|
||||||
|
|
||||||
|
doSMTPSTARTTLSPort :: String -> PortNumber -> (SMTPConnection -> IO a) -> IO a
|
||||||
|
doSMTPSTARTTLSPort host port = bracketSMTP $ connectSMTPSTARTTLSPort host port
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user