Enviar correo automático en una fecha específica a través de java

Estoy usando la API de correo Java para enviar correos electrónicos a través de mi aplicación Java. Pero quiero enviarlo automáticamente en una fecha futura, es decir, cualquier fecha específica de cada mes / año. He usado el servidor SMTP de mi ISP para enviar correos electrónicos en la identificación mencionada. He referido el siguiente ejemplo disponible en la red. Cómo establecer una fecha específica aquí. He intentado SimpleDateFormat y lo configuré aquí, pero todavía envía correo de inmediato, pero configuró su fecha de envío como la fecha específica mencionada. ¿Hay alguna otra forma de enviar correos electrónicos automáticos en la fecha y hora mencionadas?

import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;

// Send a simple, single part, text/plain e-mail
public class TestEmail {

public static void main(String[] args) {

    // SUBSTITUTE YOUR EMAIL ADDRESSES HERE!!!
    String to = "[email protected]";
    String from = "[email protected]";
    // SUBSTITUTE YOUR ISP'S MAIL SERVER HERE!!!
    String host = "smtp.yourisp.net";

    // Create properties, get Session
    Properties props = new Properties();

    // If using static Transport.send(),
    // need to specify which host to send it to
    props.put("mail.smtp.host", host);
    // To see what is going on behind the scene
    props.put("mail.debug", "true");
    Session session = Session.getInstance(props);

    try {
        // Instantiatee a message
        Message msg = new MimeMessage(session);

        //Set message attributes
        msg.setFrom(new InternetAddress(from));
        InternetAddress[] address = {new InternetAddress(to)};
        msg.setRecipients(Message.RecipientType.TO, address);
        msg.setSubject("Test E-Mail through Java");
        msg.setSentDate(new Date());

        // Set message content
        msg.setText("This is a test of sending a " +
                    "plain text e-mail through Java.\n" +
                    "Here is line 2.");

        //Send the message
        Transport.send(msg);
    }
    catch (MessagingException mex) {
        // Prints all nested (chained) exceptions as well
        mex.printStackTrace();
    }
}
}//End of class

Respuestas a la pregunta(2)

Su respuesta a la pregunta