use crate::config::SmtpConfig;
use crate::email::Email;
use crate::error::SmtpError;
use crate::esp_transport::EspTransport;
use crate::protocol;
pub struct SmtpClient {
config: SmtpConfig,
}
impl SmtpClient {
pub fn new(config: SmtpConfig) -> Self {
Self { config }
}
pub fn send(&self, email: &Email) -> Result<(), SmtpError> {
let mut transport =
EspTransport::connect(&self.config).map_err(|e| SmtpError::Connection {
host: self.config.host.clone(),
port: self.config.port,
source: e,
})?;
protocol::send_email(&mut transport, &self.config, email)
}
}