int mu_smtp_capa_iterator (mu_smtp_t smtp, mu_iterator_t *itr) { if (!smtp || !itr) return EINVAL; if (MU_SMTP_FISSET (smtp, _MU_SMTP_ERR)) return MU_ERR_FAILURE; if (!smtp->capa) { int rc = mu_smtp_ehlo (smtp); if (rc) return rc; } if (!MU_SMTP_FISSET (smtp, _MU_SMTP_ESMTP)) return MU_ERR_FAILURE; return mu_list_get_iterator (smtp->capa, itr); }
int mu_smtp_set_secret (mu_smtp_t smtp, mu_secret_t secret) { if (!smtp) return EINVAL; if (smtp->secret) { if (MU_SMTP_FISSET (smtp, _MU_SMTP_CLNPASS)) mu_secret_password_unref (smtp->secret); mu_secret_destroy (&smtp->secret); } if (!secret) return 0; return mu_secret_dup (secret, &smtp->secret); }
int mu_smtp_send_stream (mu_smtp_t smtp, mu_stream_t stream) { int status; mu_stream_t input; if (!smtp) return EINVAL; if (MU_SMTP_FISSET (smtp, _MU_SMTP_ERR)) return MU_ERR_FAILURE; if (smtp->state != MU_SMTP_MORE) return MU_ERR_SEQ; status = mu_filter_create (&input, stream, "CRLFDOT", MU_FILTER_ENCODE, MU_STREAM_READ); if (status) return status; status = _smtp_data_send (smtp, input); mu_stream_destroy (&input); return status; }