From a5e240859c26f518b151fd7426a8f2ce78892f41 Mon Sep 17 00:00:00 2001 From: "Daniel P. Wright" Date: Wed, 28 Aug 2013 08:12:18 +0900 Subject: [PATCH] Add doSMTP* functions to match HaskellNet These are quite useful helpers to stop you from forgetting to close the connection (like I did). --- src/Network/HaskellNet/SMTP/SSL.hs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/Network/HaskellNet/SMTP/SSL.hs b/src/Network/HaskellNet/SMTP/SSL.hs index 54694a1..139a147 100644 --- a/src/Network/HaskellNet/SMTP/SSL.hs +++ b/src/Network/HaskellNet/SMTP/SSL.hs @@ -3,6 +3,10 @@ module Network.HaskellNet.SMTP.SSL , connectSMTPSSLPort , connectSMTPSTARTTLS , connectSMTPSTARTTLSPort + , doSMTPSSL + , doSMTPSSLPort + , doSMTPSTARTTLS + , doSMTPSTARTTLSPort ) where import Network.Socket.Internal (PortNumber) @@ -14,6 +18,7 @@ import Network.BSD (getHostName) import qualified Data.ByteString.Char8 as B +import Control.Exception import Control.Monad import Data.IORef @@ -64,3 +69,18 @@ prefixedGetLine :: IORef [B.ByteString] -> IO B.ByteString -> IO B.ByteString prefixedGetLine prefix rawGetLine = readIORef prefix >>= deliverLine where deliverLine [] = rawGetLine 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