Sendmail
type domain = Colombe.Domain.t
type reverse_path = Colombe.Reverse_path.t
type forward_path = Colombe.Forward_path.t
type ('a, 's) stream = unit -> ('a option, 's) Colombe.Sigs.io
type error = [
| `Protocol of
[ Colombe.Request.Encoder.error
| Colombe.Reply.Decoder.error
| `Unexpected_response of int * string list
| `Invalid_base64_value of string
| `Invalid_login_challenge of string ]
| `Unsupported_mechanism
| `Encryption_required
| `Weak_mechanism
| `Authentication_rejected
| `Authentication_failed
| `Authentication_required
| `Temporary_failure of tmp_error
]
val pp_error : error Fmt.t
val sendmail :
's Colombe.Sigs.impl ->
('flow, 's) Colombe.Sigs.rdwr ->
'flow ->
Colombe.State.Context.t ->
?authentication:authentication ->
domain:Colombe.Domain.t ->
reverse_path ->
forward_path list ->
(string * int * int, 's) stream ->
((unit, error) Stdlib.result, 's) Colombe.Sigs.io
sendmail impl rdwr flow ctx ?authentication ~domain sender recipients mail
where:
impl
is the scheduler (unix, lwt or async)rdwr
read/write syscallsflow
witness of the flow (can be a socket)ctx
context used by the processauthentication
authentication information used by the processsender
sender of the mailrecipients
recipients of the mailmail
stream of the mailThis process try to send a mail according RFC4409
. The process should be wrapped into a secured flow (like TLS). For a real use-case of sendmail
, you should look into sendmail-lwt
which takes care about the TLS layer.