smtp_client
struct smtp_client;
struct smtp_client *smtp_connect(const struct smtp_params *, void *);
void smtp_cert_verified(struct smtp_client *, int);
void smtp_set_tls(struct smtp_client *, void *);
void smtp_quit(struct smtp_client *);
void smtp_sendmail(struct smtp_client *, struct smtp_mail *);
void smtp_require_tls(void *, struct smtp_client *);
void smtp_ready(void *, struct smtp_client *);
void smtp_failed(void *, struct smtp_client *, int, const char *);
void smtp_closed(void *, struct smtp_client *);
void smtp_status(void *, struct smtp_client *, struct smtp_status *);
void smtp_done(void *, struct smtp_client *, struct smtp_mail *);
static void smtp_client_free(struct smtp_client *);
static void smtp_client_state(struct smtp_client *, int);
static void smtp_client_abort(struct smtp_client *, int, const char *);
static void smtp_client_cancel(struct smtp_client *, int, const char *);
static void smtp_client_sendcmd(struct smtp_client *, char *, ...);
static void smtp_client_sendbody(struct smtp_client *);
static int smtp_client_readline(struct smtp_client *);
static int smtp_client_replycat(struct smtp_client *, const char *);
static void smtp_client_response(struct smtp_client *, const char *);
static void smtp_client_mail_abort(struct smtp_client *);
static void smtp_client_mail_status(struct smtp_client *, const char *);
static void smtp_client_rcpt_status(struct smtp_client *, struct smtp_rcpt *, const char *);
struct smtp_client *
struct smtp_client *proto;
smtp_cert_verified(struct smtp_client *proto, int verified)
smtp_set_tls(struct smtp_client *proto, void *ctx)
smtp_quit(struct smtp_client *proto)
smtp_sendmail(struct smtp_client *proto, struct smtp_mail *mail)
smtp_client_free(struct smtp_client *proto)
smtp_client_abort(struct smtp_client *proto, int err, const char *reason)
smtp_client_cancel(struct smtp_client *proto, int err, const char *reason)
smtp_client_state(struct smtp_client *proto, int newstate)
smtp_client_response(struct smtp_client *proto, const char *line)
struct smtp_client *proto = arg;
smtp_client_readline(struct smtp_client *proto)
smtp_client_replycat(struct smtp_client *proto, const char *line)
smtp_client_sendbody(struct smtp_client *proto)
smtp_client_sendcmd(struct smtp_client *proto, char *fmt, ...)
smtp_client_mail_status(struct smtp_client *proto, const char *status)
smtp_client_mail_abort(struct smtp_client *proto)
smtp_client_rcpt_status(struct smtp_client *proto, struct smtp_rcpt *rcpt, const char *line)
smtp_require_tls(void *tag, struct smtp_client *proto)
smtp_ready(void *tag, struct smtp_client *proto)
smtp_failed(void *tag, struct smtp_client *proto, int failure, const char *detail)
smtp_status(void *tag, struct smtp_client *proto, struct smtp_status *status)
smtp_done(void *tag, struct smtp_client *proto, struct smtp_mail *mail)
smtp_closed(void *tag, struct smtp_client *proto)