An open API service indexing awesome lists of open source software.

https://github.com/phlummox/assumpta-core

A Haskell library for constructing SMTP clients, providing a monad transformer and mtl-style class for communicating with an SMTP server
https://github.com/phlummox/assumpta-core

email-sender haskell networking smtp smtp-client smtp-protocol

Last synced: 9 days ago
JSON representation

A Haskell library for constructing SMTP clients, providing a monad transformer and mtl-style class for communicating with an SMTP server

Awesome Lists containing this project

README

          

# assumpta-core [![Hackage version](https://img.shields.io/hackage/v/assumpta-core.svg?label=Hackage)](https://hackage.haskell.org/package/assumpta-core) [![Linux Build Status](https://img.shields.io/travis/com/phlummox/assumpta-core.svg?label=Linux%20build)](https://travis-ci.com/phlummox/assumpta-core) [![phlummox](https://circleci.com/gh/phlummox/assumpta-core.svg?style=svg)](https://circleci.com/gh/phlummox/assumpta-core)

A library for constructing SMTP clients, which provides the core functionality
for [assumpta](https://hackage.haskell.org/package/assumpta).
It provides a monad transformer and an mtl-style class for sending SMTP
commands (including `STARTTLS`) to a server and checking for expected
responses, over some abstract connection type.

It does not provide a concrete implementation
which can actually be used to communicate over
a network - for that, see the
[assumpta](https://hackage.haskell.org/package/assumpta) package.

## Installation

`assumpta-core` can be installed in the standard way using `stack`
or `cabal` (e.g. `stack install assumpta-core`).

## Usage

See the [assumpta](https://hackage.haskell.org/package/assumpta) package
for examples of usage.

Typically, you will want to:

- write an instance of the `Connection` class in
[Network.Mail.Assumpta.Connection](http://hackage.haskell.org/package/assumpta/docs/Network-Mail-Assumpta-Connection.html),
providing a concrete implementation in terms of some networking
library.
([assumpta](https://hackage.haskell.org/package/assumpta) contains
one based on
[connection](https://hackage.haskell.org/package/connection).)
- for convenience, write a type synonym for the `SmtpT` transformer,
specialized over your new `Connection` instance
(`MySmtpT = SmtpT MyConnection`).
- And that should be enough for you to start communicating
with a server. See the examples in
[assumpta](https://hackage.haskell.org/package/assumpta) for more
details.

## FAQ

- Q. Why the name 'Assumpta'?

A. Dunno, I just like it as a name. It means "assumption" you know.
I find I make many of those when programming.

## Acknowledgements

Many thanks to
[Alexander Vieth](https://github.com/avieth)
(author of [smtp-mail-ng](http://hackage.haskell.org/package/smtp-mail-ng)),
and to [Jason Hickner](https://github.com/jhickner) and
[Matt Parsons](https://github.com/parsonsmatt)
(authors of [smtp-mail](http://hackage.haskell.org/package/smtp-mail)),
whose packages provided the original basis for the
assumpta-core code.