dust-mail 0.4.3

A multi protocol email client
Documentation
use super::{Config, Result};

pub struct Client {}

impl Client {
    #[cfg(feature = "autoconfig")]
    pub async fn from_autoconfig<D: AsRef<str>>(domain: D) -> Result<Config> {
        use super::parse::AutoConfigParser;

        let autoconfig = autoconfig::from_domain(domain).await?;

        let config = AutoConfigParser::parse(autoconfig);

        Ok(config)
    }

    #[cfg(feature = "autodiscover")]
    pub async fn from_autodiscover<E: AsRef<str>, P: AsRef<str>>(
        email: E,
        password: Option<P>,
    ) -> Result<Config> {
        use super::parse::AutodiscoverParser;

        let autodiscover = ms_autodiscover::from_email(email, password, None::<String>).await?;

        let config = AutodiscoverParser::parse(autodiscover)?;

        Ok(config)
    }

    pub async fn from_dns<D: AsRef<str>>(domain: D) -> Result<Config> {
        use super::parse::DnsDiscoverParser;

        let servers = dns_mail_discover::from_domain(domain).await?;

        let config = DnsDiscoverParser::parse(servers);

        Ok(config)
    }
}