-- | -- Module: Network.SMTP -- Copyright: (c) 2011 Ertugrul Soeylemez -- License: BSD3 -- Maintainer: Ertugrul Soeylemez -- -- This package provides a monad transformer for fast, incremental ESMTP -- sessions, with which you can, among other things, send emails. Here -- is an example session: -- -- > testSession :: -- > (MailMonad m, MonadIO m) => -- > ByteString -> ByteString -> ByteString -> ByteString -> -- > Iteratee SmtpResponse m () -- > testSession srcDomain fromAddr toAddr content = do -- > waitForWelcome -- > hello srcDomain -- > mailFrom fromAddr -- > rcptTo toAddr -- > mailDataStr content -- > quit -- -- The simplest interfaces to running SMTP sessions are 'withSmtpConn' -- and 'withMxConn'. The latter does a DNS lookup for the given domain -- to discover the MX server and connect to it. The former simply -- connects to the given hostname and port. -- -- If you need more control over the connection handles and other -- parameters like timeout and flood protection, you may want to use -- 'sendMail' or 'sendMail_' instead. Those functions are also useful, -- if you want to run an SMTP session using stdin and stdout for testing -- or if you want to combine multiple stateful iteratees. This also -- means that you have to run the underlying state computation yourself -- for whatever state monad you work in. See documentation for -- 'sendMail'. -- -- Finally you can use the low level interface for running sessions. In -- this case you will need to use the iteratee functions directly. This -- is normally not necessary, as 'sendMail' does most of the boilerplate -- for you. It can become useful, when you want to use some -- enumeratees, e.g. to encapsulate the session in SSL or to go through -- a proxy server. You can use the 'responseLines' function to convert -- a raw 'ByteString' stream to a stream of 'SmtpResponse's. module Network.Smtp ( -- * Reexports module Network.Smtp.Connect, module Network.Smtp.Monad, module Network.Smtp.Session, module Network.Smtp.Simple, module Network.Smtp.Tools, module Network.Smtp.Types ) where import Network.Smtp.Connect import Network.Smtp.Monad import Network.Smtp.Session import Network.Smtp.Simple import Network.Smtp.Tools import Network.Smtp.Types