Добрый день/вечер/утро. 
Мне необходимо сделать выборку из таблицы сотрудников, которые привязаны к определенной дате (ДД. ММ) и отправить почтовую рассылку другим сотрудникам, которые должны быть в курсе наступившей даты у сотрудников из первой выборке, с указанием ФИО этих сотрудников.
Работает все без укоризненно с одной деталью - отправка происходит только на первую найденную почту. Но адресов в действительности много. 
Что я сделала не правильно и как это исправить?
List<String> listofChoosens;
 List<String> listUsersAffected;
 List<String> usertoSend;
 List<String> fio;
public void sendMails(String day, String month) throws Exception {
        listofChoosens = choosenOneRepository.getCelebrantIds(day, month);// 1 шаг. Получить список всех сотрудников с определенной датой.
            System.out.println("Список первой выборки " + listofChoosens);
        for (int i=0; i<listofChoosens.size(); i++) {
            listUsersAffected = choosenOneRepository.select_affected_users(listofChoosens.get(i)); //2 Получить список связанных сотрудников с теми, кто отобран на шаге 1
            System.out.println("Список второй выборки " + listUsersAffected);
        }
        for (int j=0; j<listUsersAffected.size(); j++){
            usertoSend = contactsRepository.selects_email(listUsersAffected.get(j));// 3 получить почты сотрудников с шага 2
            System.out.println("мыло " + usertoSend);
            sendMail(usertoSend.get(j), "fio.get(j)");
        }
        for (int z=0; z<usertoSend.size(); z++){ // 4 получить имена сотрудников с шага 1
            fio = userRepository.selects_fio(listUsersAffected.get(z));
            sendMail(usertoSend.get(z), fio.get(z)); // 5 отправить рассылку на адреса, полученные на шаге 3, с указанием имен полученных на шаге 4
            System.out.println("ФИО " + "fio");
    }
}
    public void sendMail(String mailAdress, String fio) throws Exception {
        mailSender.run(mailAdress, fio);
    }