minismtp 0.1.0

A minimal asynchronous SMTP server library (MTA) for Rust.
Documentation
use tokio::io;

use crate::{
    connection::{Connection, Mail, State},
    parser::responses::{OK, SEND_DATA},
};

pub fn prepare_for_data(
    connection: &mut Connection,
    mail: Mail,
) -> Result<&'static [u8], io::Error> {
    log::info!("Command received: DATA");
    log::info!("Awaiting data...");
    connection.state = State::Data(mail);

    Ok(SEND_DATA)
}

pub fn data(
    connection: &mut Connection,
    mut mail: Mail,
    raw_command: String,
) -> Result<&'static [u8], io::Error> {
    log::info!("Some data received");
    // Append the data to the mail
    mail.data += &raw_command;
    connection.state = State::Data(mail);
    if raw_command.ends_with("\r\n.\r\n") {
        log::info!("Data received successfully");
        Ok(OK)
    } else {
        Ok(&[])
    }
}