class MailSpool implements Startable, Disposable {

    public void send(Mail mail, MailMetadata metadata) throws MailQueueException {
        mail.setAttribute(new Attribute(MailMetadata.MAIL_METADATA_MESSAGE_ID_ATTRIBUTE, AttributeValue.of(metadata.getMessageId().serialize())));
        mail.setAttribute(new Attribute(MailMetadata.MAIL_METADATA_USERNAME_ATTRIBUTE, AttributeValue.of(metadata.getUsername())));
        queue.enQueue(mail);
    }

    @Inject @VisibleForTesting  MailSpool(MailQueueFactory<?> queueFactory);

}