@Starvings

Как сделать выборку контактов из БД и отправить им почтовую рассылку?

Добрый день/вечер/утро.
Мне необходимо сделать выборку из таблицы сотрудников, которые привязаны к определенной дате (ДД. ММ) и отправить почтовую рассылку другим сотрудникам, которые должны быть в курсе наступившей даты у сотрудников из первой выборке, с указанием ФИО этих сотрудников.

Работает все без укоризненно с одной деталью - отправка происходит только на первую найденную почту. Но адресов в действительности много.

Что я сделала не правильно и как это исправить?

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);
    }
  • Вопрос задан
  • 80 просмотров
Решения вопроса 1
@Dementor
программист, архитектор, аналитик
Тут только единый ответ - нужно дебажить!

Если бы ты дебажил, а не кидал кучу "System.out.println" в поток вывода, то сразу заметил бы, что в usertoSend у тебя результаты только последнего вызова contactsRepository.selects_email(), а в listUsersAffected только последний результат вызова choosenOneRepository.select_affected_users(). В каждом цикле просто перезаписываешь данные предыдущих итераций.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
xez
@xez Куратор тега Java
TL Junior Roo
Проблема в том, что знако =- это знак присваивания.
Поэтому у вас отправка не на "первую найденную", а на последнюю.

Вам же, видимо, нужно найденные списки собирать в одни список. Для этого есть методы .add (для одного элемента) и .addAll для нескольких.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы