| | |
| | | import com.google.common.collect.Lists; |
| | | import com.sun.mail.smtp.SMTPAddressFailedException; |
| | | import kr.wisestone.owl.config.CommonConfiguration; |
| | | import kr.wisestone.owl.constant.ElasticSearchConstants; |
| | | import kr.wisestone.owl.constant.MailConstants; |
| | | import kr.wisestone.owl.constant.MsgConstants; |
| | | import kr.wisestone.owl.domain.Department; |
| | |
| | | import kr.wisestone.owl.repository.SystemEmailRepository; |
| | | import kr.wisestone.owl.service.SystemEmailService; |
| | | import kr.wisestone.owl.service.UserService; |
| | | import kr.wisestone.owl.util.CommonUtil; |
| | | import kr.wisestone.owl.util.DateUtil; |
| | | import kr.wisestone.owl.util.MapUtil; |
| | | import kr.wisestone.owl.util.StringTemplateUtil; |
| | | import kr.wisestone.owl.util.*; |
| | | import org.apache.commons.io.FilenameUtils; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | |
| | | } |
| | | } |
| | | |
| | | // 실시간 이메일 발송 |
| | | @Override |
| | | @Transactional |
| | | public void realTimeSendEmail() { |
| | | |
| | | List<String> sendUsers = this.userService.findByRealTimeNotifyTime(); |
| | | |
| | | for (String sendUser : sendUsers) { |
| | | // 사용자 별로 아직 발송되지 않은 이메일을 조회한다. |
| | | List<SystemEmail> systemEmails = this.findBySendAddressAndSendYn(sendUser); |
| | | StringBuilder emailBuilder = new StringBuilder(); |
| | | User user = this.userService.findByAccount(sendUser); |
| | | |
| | | if (user != null) { |
| | | Locale locale = CommonUtil.getUserLanguage(user.getLanguage()); // 메일을 받는 사용자가 사용하고 있는 언어 정보를 가져온다. |
| | | |
| | | for (SystemEmail systemEmail : systemEmails) { |
| | | // 받는 사람의 언어로 변경하여 예약된 이메일을 발송한다. |
| | | this.makeReservationContextEmail(emailBuilder, systemEmail, locale); |
| | | systemEmail.setSendYn(true); |
| | | } |
| | | // 내용이 있으면 발송 |
| | | if (!StringUtils.isEmpty(emailBuilder.toString())) { |
| | | // 이메일을 발송한다. |
| | | this.sendEmail(this.messageAccessor.message(MsgConstants.REALTIME_EMAIL_TITLE, locale), emailBuilder.toString(), new String[]{CommonUtil.decryptAES128(sendUser)}, null); |
| | | this.systemEmailRepository.saveAll(systemEmails); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | // 받는 사람의 언어로 변경하여 예약된 이메일을 발송한다. |
| | | private void makeReservationContextEmail(StringBuilder emailBuilder, SystemEmail systemEmail, Locale locale) { |
| | | MailConstants mailConstants; |