QMuB      !"#$%&'()*+,-./0123456789:;<=>?@A Ertugrul Soeylemez <es@ertes.de> Ertugrul Soeylemez <es@ertes.de>SMTP response. Three digit response code. Messages sent with the code. SMTP exception.  Failed SMTP command (used by ). Waiting for welcome message. VRFY with the given user name. RSET. RCPT TO with address. QUIT. MAIL FROM with address. EHLO or HELO with domain. DATA. Mail session configuration. Supported extensions. Connection handle. Write timeout in milliseconds. The  monad is  over B. The 1 monad transformer encapsulates an SMTP session. SMTP service extension. Authentication extension. >Authentication methods for the SMTP authentication extension. We don''t know any authentication methods yet.         Ertugrul Soeylemez <es@ertes.de> Format a C of D messages from an   for output. E'Read a three digit SMTP response code. FCDetermine whether the given SMTP response is a multiline response. 0Read the next SMTP response line from the given D lines  stream (i.e. a D stream converted by G ). Returns  H on EOF. Returns Just (Left line), if the next line is 0 not a proper SMTP response. Otherwise returns (code, more, msg). !#Read the next SMTP response from a G -splitted D C stream. Throws an error on protocol errors. Returns at most the $ given number of response messages. "Convert a stream of G -splitted D lines to a < stream of SMTP responses. In case of a protocol error the 0 enumeration is aborted and an error is thrown. #Convert extension string to  value, if the corresponding  extension is known.  !"# !"# !"# Ertugrul Soeylemez <es@ertes.de>$CFormat a bad response together with the supplied error message and  throw an  in the underlying IJ. %Send a stream of Ds to the SMTP server. &Send a list of D&s followed an SMTP line terminator to  the SMTP server. 'DSet the write timeout for the current mail session in milliseconds. (+Retrieve the next SMTP response. Throw an K, if there is no  next response. )CRun a mail session computation with the given protocol line length D limit (first argument), response lines limit (second argument) and - output handle. The input is supplied by an L such as  . The inner iteratee uses  as its input type and hence  expects the G and " enumeratees to be applied.  This is done by ), for you, so the resulting iteratee takes a  raw D stream as input. $%&'())'$%&($%&'() Ertugrul Soeylemez <es@ertes.de> *Try EHLO with fallback to HELO. + Send the DATA3 command along with the mail content. Please note 9 that the last line must be properly terminated by CRLF. ,D interface to +. -Send  MAIL FROM command. .Send QUIT4 command. Please note: This iteratee violates the 7 standard by recognizing a 250 result code as success. /Send RCPT TO command. 0Send RSET command. 1 Send the VRFY2 command to find out, whether the mail exchangers C knows the given user. Nowadays most mail exchangers disable this  command for security reasons. DPlease note that many SMTP servers will give you false positives or F false negatives to prevent spamming attempts. It is not recommended  to use this command. 24Wait for the welcome greeting from the SMTP server. *+,-./012 *+,-./012 *+,-./012 Ertugrul Soeylemez <es@ertes.de> 3Session configuration. 45Input buffer size. 6&Input handle (e.g. receiving socket). 7(Maximum line length (flood protection). 8/Maximum number of messages (flood protection). 9%Output handle (e.g. sending socket). :!Session timeout in milliseconds. ;Read/write timeout in milliseconds. <Default values for 43! with the given input and output  handle respectively. =AExecute the given mail session using the supplied configuration. A Please note that both handles must be set to binary mode and be  unbuffered. See M and N. >Like =$, but throws an exception on error. 3456789:;<=> 3456789:;<=> 3456789:;456789:;<=> Ertugrul Soeylemez <es@ertes.de>?@Perform some useful (but not necessarily needed) initialization @ like disabling SIGPIPE and initializing sockets, run the given  computation and then clean up. @ Interface to A#, which connects to the first mail 5 exchanger (MX) of the given domain on port 25. The O parameter E specifies whether to fall back to the given domain itself, if no MX  records can be found. ADConnect to the specified SMTP server and run the given computation.  Note that there is also @", which resolves the MX server of  the given domain. ?@A@A??@A Ertugrul Soeylemez <es@ertes.de>B  !"#$%&'()*+,-./0123456789:;<=>?@AP     !"#$%%&'()*+,-./0123456789::;<=>?@ABCDEFGHIJKLMNOPQR STUVWXYWXYWXZWX[T\]T\^H_`a ismtp-3.0.1Network.Smtp.ToolsNetwork.Smtp.TypesNetwork.Smtp.MonadNetwork.Smtp.SessionNetwork.Smtp.SimpleNetwork.Smtp.ConnectNetwork.Smtp.Ext.Auth Network.Smtpnetlines-0.4.3Data.Enumerator.NetLinesenumHandleTimeout SmtpResponsesmtpCode smtpMessages SmtpExceptionsmtpErrorMessagesmtpErrorCommand smtpErrorCodesmtpErrorServerMessage SmtpCommandSmtpWelcomeCmd SmtpVerifyCmd SmtpResetCmd SmtpRcptToCmd SmtpQuitCmdSmtpMailFromCmd SmtpHelloCmd SmtpDataCmd MailConfigmailExtensions mailHandlemailWriteTimeoutMailMailT ExtensionAuthExt AuthMethod formatMsgssmtpResponseLine smtpResponse smtpResponsesstringToExtension mailErrormailPut mailPutLnmailSetWriteTimeout nextResponserunMailThellomailData mailDataStrmailFromquitrcptToresetverifywaitForWelcomeSendMailmailBufferSizemailInputHandle mailMaxLinemailMaxMessagesmailOutputHandle mailTimeout mailTimeoutIO defSendMailsendMail sendMail_ withIsmtp withMxConn withSmtpConnghc-prim GHC.TypesIOvector-0.7.0.1 Data.VectorVectorbytestring-0.9.1.10Data.ByteString.Internal ByteString readRespCode readRespMorenetLinesbase Data.MaybeNothingenumerator-0.4.9.1Data.EnumeratorIterateeError Enumerator GHC.IO.Handle hSetBufferinghSetBinaryModeGHC.BoolBool