module Peer_info : sig ... end
val create : ?flows:Async_smtp__.Mail_log.Flows.t ‑> emulate_tls_for_test:bool ‑> dest:Async_smtp_types.Smtp_socket_address.t ‑> Async.Reader.t ‑> Async.Writer.t ‑> Async_smtp__.Client_config.t ‑> t
val create_bsmtp : ?flows:Async_smtp__.Mail_log.Flows.t ‑> Async.Writer.t ‑> Async_smtp__.Client_config.t ‑> t
val config : t ‑> Async_smtp__.Client_config.t
val info : t ‑> Peer_info.t option
val is_using_tls : t ‑> bool
val with_session : t ‑> log:Async_smtp__.Mail_log.t ‑> component:Async_smtp__.Mail_log.Component.t ‑> credentials:Async_smtp__.Credentials.t ‑> f:(t ‑> 'a Async.Deferred.Or_error.t) ‑> 'a Async.Deferred.Or_error.t
val do_helo : t ‑> log:Async_smtp__.Mail_log.t ‑> component:Async_smtp__.Mail_log.Component.t ‑> unit Async.Deferred.Or_error.t
val send : t ‑> log:Async_smtp__.Mail_log.t ‑> ?flows:Async_smtp__.Mail_log.Flows.t ‑> component:Async_smtp__.Mail_log.Component.t ‑> here:Lexing.position ‑> Async_smtp.Smtp_command.t ‑> unit Async.Deferred.Or_error.t
val receive : ?on_eof:(?partial:Async_smtp.Smtp_reply.partial ‑> unit ‑> Async_smtp.Smtp_reply.t Async.Deferred.Or_error.t) ‑> ?timeout:Core.Time.Span.t ‑> ?flows:Async_smtp__.Mail_log.Flows.t ‑> t ‑> log:Async_smtp__.Mail_log.t ‑> component:Async_smtp__.Mail_log.Component.t ‑> here:Lexing.position ‑> [ `Bsmtp | `Received of Async_smtp.Smtp_reply.t ] Async.Deferred.Or_error.t
val send_receive : ?on_eof:(?partial:Async_smtp.Smtp_reply.partial ‑> unit ‑> Async_smtp.Smtp_reply.t Async.Deferred.Or_error.t) ‑> ?timeout:Core.Time.Span.t ‑> t ‑> log:Async_smtp__.Mail_log.t ‑> ?flows:Async_smtp__.Mail_log.Flows.t ‑> component:Async_smtp__.Mail_log.Component.t ‑> here:Lexing.position ‑> Async_smtp.Smtp_command.t ‑> [ `Bsmtp | `Received of Async_smtp.Smtp_reply.t ] Async.Deferred.Or_error.t
val send_string : t ‑> log:Async_smtp__.Mail_log.t ‑> ?flows:Async_smtp__.Mail_log.Flows.t ‑> component:Async_smtp__.Mail_log.Component.t ‑> here:Lexing.position ‑> string ‑> unit Async.Deferred.Or_error.t
val send_receive_string : ?on_eof:(?partial:Async_smtp.Smtp_reply.partial ‑> unit ‑> Async_smtp.Smtp_reply.t Async.Deferred.Or_error.t) ‑> ?timeout:Core.Time.Span.t ‑> t ‑> log:Async_smtp__.Mail_log.t ‑> ?flows:Async_smtp__.Mail_log.Flows.t ‑> component:Async_smtp__.Mail_log.Component.t ‑> here:Lexing.position ‑> string ‑> [ `Bsmtp | `Received of Async_smtp.Smtp_reply.t ] Async.Deferred.Or_error.t
val writer : t ‑> Async.Writer.t
val reader : t ‑> Async.Reader.t option
val remote_address : t ‑> Async_smtp_types.Smtp_socket_address.t option