The mime-mail package allows you to create multipart messages and renders them to lazy ByteStrings. It comes built in with support for using the sendmail executable for actually sending the messages. This is not always the ideal delivery mechanism because:
- It doesn't work on Windows.
- In theory, some MTAs may not supply a sendmail executable. However, I think all the common ones do.
- It doesn't support the situation of having a mail server on a separate system.
It would be good to have a separate package that can handle sending of the lazy ByteStrings that mime-mail produces. The two candidate packages for this are SMTPClient and HaskellNet. I have no experience with either, except to know that SMTPClient currently uses Strings instead of ByteStrings.
Another feature that would be very nice to have for an SMTP library would be SSL/TLS support. When I added this support to the http-enumerator, I use cabal flags to switch between an openssl backend and a backend using the tls pure-Haskell package.
The final point is whether the sendmail function should remain in mime-mail or be moved elsewhere. It introduces a dependency on process, which doesn't seem too bad since that package is shipped with GHC. It also might give users the impression that mime-mail only works with sendmail. However, documentation might address that.