Usando JProgressBar com Java Mail (conhecendo o progresso após transport.send ())

Eu tenho este programa que envia email. Eu queria saber se eu poderia usarprogress bar para melhorar a interface do usuário. O que eu quero é que a barra de progresso progrida adequadamente após a instruçãotransport.send() é encontrado. Existe uma maneira de saber o progresso. O que acontece é que, conforme o usuário pressionasend é iniciado um novo encadeamento que envia o email. A resposta após clicar em enviar é ruim, pois o usuário não sabe que sua ação está sendo ouvida ou nã (embora esteja sendo ouvido!) Após um intervalo de meio minuto, ele recebe umaJOptionPane isso sim, a mensagem foi enviada.Você concorda que todos estão ansiosos para saber que sua ação está sendo processada ou não.

Existe alguma saída para usar a barra de progress( ou seja, como posso saber o andamento do meu programa de e-mail) Se não posso usarJProgressBar qual é o outro método que posso usar para informar ao usuário que seu comando está sendo processado e que ele não precisa se preocupa

Pela forma como esta é a parte responsável pelo envio de e-mails.

try {
           message.setFrom( new InternetAddress(from));
           message.setRecipients(MimeMessage.RecipientType.TO , InternetAddress.parse(to) );
           message.setSubject(subject);
           message.setText(emailMessage);
           attachment.setDataHandler( new DataHandler( fds ) );
           attachment.setFileName( fileName );
           messagePart.setText( emailMessage );
           Multipart gmailMP = new MimeMultipart();
           gmailMP.addBodyPart(attachment);
           gmailMP.addBodyPart( messagePart );
           message.setContent( gmailMP );
           Transport transport = session.getTransport("smtp");
           transport.send(message); // LINE THAT SENDS EMAIL
           transport.close();   

           JOptionPane.showMessageDialog(new JFrame() , "Message sent!");
       }    catch(Exception exc) {
               JOptionPane.showMessageDialog( new JFrame() , exc );
            }

Depois da linha comentada, leva algum tempo para as próximas 2 instruções serem executadas. Entre eu quero que o usuário saiba que sua ação está sendo processada

Como eu posso fazer isso

questionAnswers(2)

yourAnswerToTheQuestion