Merge pull request #269 from Kitzanos/feature/GEPAFINBE-199
GEPAFINBE-199 (Send Email rinaldo.bonazzo@bflows.net)
This commit is contained in:
11
pom.xml
11
pom.xml
@@ -258,6 +258,17 @@
|
|||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- Jakarta email support -->
|
||||||
|
<!-- https://jakarta.ee/specifications/mail/ -->
|
||||||
|
<!-- https://github.com/jakartaee/mail-api -->
|
||||||
|
<!-- https://mvnrepository.com/artifact/jakarta.mail/jakarta.mail-api -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.sun.mail</groupId>
|
||||||
|
<artifactId>jakarta.mail</artifactId>
|
||||||
|
<version>2.0.1</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<repositories>
|
<repositories>
|
||||||
<repository>
|
<repository>
|
||||||
|
|||||||
@@ -536,8 +536,7 @@ public class GepafinConstant {
|
|||||||
public static final String APPOINTMENT_ID="appointmentId";
|
public static final String APPOINTMENT_ID="appointmentId";
|
||||||
public static final String APPLICATION_STATUS="applicationStatus";
|
public static final String APPLICATION_STATUS="applicationStatus";
|
||||||
|
|
||||||
|
public static final String RINALDO_EMAIL = "rinaldo.bonazzo@bflows.net";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,15 +1,8 @@
|
|||||||
package net.gepafin.tendermanagement.dao;
|
package net.gepafin.tendermanagement.dao;
|
||||||
|
|
||||||
import com.fasterxml.jackson.core.type.TypeReference;
|
|
||||||
import com.fasterxml.jackson.databind.JsonNode;
|
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
||||||
import com.itextpdf.text.BaseColor;
|
|
||||||
import com.itextpdf.text.Font;
|
|
||||||
import com.itextpdf.text.FontFactory;
|
|
||||||
import jakarta.persistence.criteria.CriteriaBuilder;
|
import jakarta.persistence.criteria.CriteriaBuilder;
|
||||||
import jakarta.persistence.criteria.Root;
|
import jakarta.persistence.criteria.Root;
|
||||||
import jakarta.persistence.criteria.*;
|
import jakarta.persistence.criteria.*;
|
||||||
import jakarta.servlet.http.HttpServletResponse;
|
|
||||||
import net.gepafin.tendermanagement.config.Translator;
|
import net.gepafin.tendermanagement.config.Translator;
|
||||||
import net.gepafin.tendermanagement.constants.GepafinConstant;
|
import net.gepafin.tendermanagement.constants.GepafinConstant;
|
||||||
import net.gepafin.tendermanagement.entities.*;
|
import net.gepafin.tendermanagement.entities.*;
|
||||||
@@ -56,18 +49,11 @@ import java.io.InputStream;
|
|||||||
import java.io.OutputStreamWriter;
|
import java.io.OutputStreamWriter;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.nio.charset.StandardCharsets;
|
|
||||||
import java.sql.Timestamp;
|
|
||||||
import java.text.MessageFormat;
|
import java.text.MessageFormat;
|
||||||
import java.text.NumberFormat;
|
|
||||||
import java.text.ParseException;
|
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.time.LocalTime;
|
|
||||||
import java.time.OffsetDateTime;
|
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.time.format.DateTimeParseException;
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
@@ -77,7 +63,6 @@ import java.util.zip.ZipEntry;
|
|||||||
import java.util.zip.ZipOutputStream;
|
import java.util.zip.ZipOutputStream;
|
||||||
|
|
||||||
import static org.apache.commons.lang3.StringUtils.isEmpty;
|
import static org.apache.commons.lang3.StringUtils.isEmpty;
|
||||||
import static org.hibernate.validator.internal.engine.messageinterpolation.el.RootResolver.FORMATTER;
|
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
public class ApplicationDao {
|
public class ApplicationDao {
|
||||||
@@ -210,10 +195,6 @@ public class ApplicationDao {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private FormRepository formRepository;
|
private FormRepository formRepository;
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private ApplicationEvaluationDao applicationEvaluationDao;
|
|
||||||
|
|
||||||
|
|
||||||
public ApplicationResponseBean createApplication(HttpServletRequest request, ApplicationRequestBean applicationRequestBean, Long formId, Long applicationId) {
|
public ApplicationResponseBean createApplication(HttpServletRequest request, ApplicationRequestBean applicationRequestBean, Long formId, Long applicationId) {
|
||||||
FormEntity formEntity = formService.validateForm(formId);
|
FormEntity formEntity = formService.validateForm(formId);
|
||||||
// callService.validatePublishedCall(formEntity.getCall().getId());
|
// callService.validatePublishedCall(formEntity.getCall().getId());
|
||||||
@@ -1163,24 +1144,6 @@ public class ApplicationDao {
|
|||||||
|
|
||||||
EmailLogRequest emailLogRequest=emailLogDao.createEmailLogRequest(systemEmailTemplateResponse.getEmailScenario(),RecipientTypeEnum.PROPERTIES,null,userEntity.getEmail(),userEntity.getId(),applicationEntity.getId(),null,applicationEntity.getCall().getId());
|
EmailLogRequest emailLogRequest=emailLogDao.createEmailLogRequest(systemEmailTemplateResponse.getEmailScenario(),RecipientTypeEnum.PROPERTIES,null,userEntity.getEmail(),userEntity.getId(),applicationEntity.getId(),null,applicationEntity.getCall().getId());
|
||||||
|
|
||||||
// mailUtil.sendByMailGun(subject, body, List.of(defaultSystemReceiverEmail), null);
|
|
||||||
// mailUtil.sendByMailGun(subject, body, List.of(gepafinEmail), null);
|
|
||||||
// mailUtil.sendByMailGun(subject, body, List.of(rinaldoEmail), null);
|
|
||||||
// if(Boolean.TRUE.equals(hub.getUniqueUuid().equals(defaultHubUuid))) {
|
|
||||||
// if (validator.isProductionProfileActivated()) {
|
|
||||||
// emailLogRequest.setRecipientEmails(carloEmail);
|
|
||||||
//// mailUtil.sendByMailGun(subject, body, List.of(carloEmail), null);
|
|
||||||
// emailNotificationDao.sendMail(hub.getId(), subject, body, List.of(carloEmail),emailLogRequest);
|
|
||||||
// }
|
|
||||||
// List<String> listDefaultSystemReceiverEmail = Arrays.stream(defaultSystemReceiverEmail.split(","))
|
|
||||||
// .map(String::trim)
|
|
||||||
// .filter(email -> !email.isEmpty())
|
|
||||||
// .toList();
|
|
||||||
//
|
|
||||||
// emailLogRequest.setRecipientEmails(defaultSystemReceiverEmail);
|
|
||||||
// emailNotificationDao.sendMail(hub.getId(), subject, body, listDefaultSystemReceiverEmail, emailLogRequest);
|
|
||||||
// }
|
|
||||||
|
|
||||||
List<String> hubEmails = Arrays.stream(hub.getEmail().split(","))
|
List<String> hubEmails = Arrays.stream(hub.getEmail().split(","))
|
||||||
.map(String::trim)
|
.map(String::trim)
|
||||||
.filter(email -> !email.isEmpty())
|
.filter(email -> !email.isEmpty())
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import com.fasterxml.jackson.core.JsonProcessingException;
|
|||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
import net.gepafin.tendermanagement.constants.GepafinConstant;
|
import net.gepafin.tendermanagement.constants.GepafinConstant;
|
||||||
import net.gepafin.tendermanagement.entities.*;
|
import net.gepafin.tendermanagement.entities.*;
|
||||||
|
import net.gepafin.tendermanagement.enums.EmailServiceTypeEnum;
|
||||||
import net.gepafin.tendermanagement.enums.RecipientTypeEnum;
|
import net.gepafin.tendermanagement.enums.RecipientTypeEnum;
|
||||||
import net.gepafin.tendermanagement.model.request.EmailConfig;
|
import net.gepafin.tendermanagement.model.request.EmailConfig;
|
||||||
import net.gepafin.tendermanagement.model.request.EmailLogRequest;
|
import net.gepafin.tendermanagement.model.request.EmailLogRequest;
|
||||||
@@ -15,6 +16,7 @@ import net.gepafin.tendermanagement.service.*;
|
|||||||
import net.gepafin.tendermanagement.service.impl.EmailService;
|
import net.gepafin.tendermanagement.service.impl.EmailService;
|
||||||
import net.gepafin.tendermanagement.service.impl.EmailServiceFactory;
|
import net.gepafin.tendermanagement.service.impl.EmailServiceFactory;
|
||||||
import net.gepafin.tendermanagement.util.DateTimeUtil;
|
import net.gepafin.tendermanagement.util.DateTimeUtil;
|
||||||
|
import net.gepafin.tendermanagement.service.impl.SystemEmailService;
|
||||||
import net.gepafin.tendermanagement.util.Utils;
|
import net.gepafin.tendermanagement.util.Utils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
@@ -140,7 +142,9 @@ public class EmailNotificationDao {
|
|||||||
if (rinaldoEmail != null) {
|
if (rinaldoEmail != null) {
|
||||||
EmailLogRequest emailLogRequest = emailLogDao.createEmailLogRequest(systemEmailTemplateResponse.getEmailScenario(), RecipientTypeEnum.PROPERTIES,null ,
|
EmailLogRequest emailLogRequest = emailLogDao.createEmailLogRequest(systemEmailTemplateResponse.getEmailScenario(), RecipientTypeEnum.PROPERTIES,null ,
|
||||||
rinaldoEmail, userEntity.getId(), applicationEntity.getId(), amendmentId, applicationEntity.getCall().getId());
|
rinaldoEmail, userEntity.getId(), applicationEntity.getId(), amendmentId, applicationEntity.getCall().getId());
|
||||||
sendMail(applicationEntity.getHubId(), subject, body, List.of(rinaldoEmail), emailLogRequest);
|
|
||||||
|
//SMTP
|
||||||
|
sendMail(null, subject, body, List.of(rinaldoEmail), emailLogRequest);
|
||||||
}
|
}
|
||||||
if (applicationEvaluationEntity.isPresent()) {
|
if (applicationEvaluationEntity.isPresent()) {
|
||||||
Long preInstructorId = applicationEvaluationEntity.get().getUserId(); // Assuming UserEntity has an email field
|
Long preInstructorId = applicationEvaluationEntity.get().getUserId(); // Assuming UserEntity has an email field
|
||||||
@@ -275,10 +279,17 @@ public class EmailNotificationDao {
|
|||||||
|
|
||||||
public void sendMail(Long hubId, String subject, String body, List<String> recipientEmails, EmailLogRequest emailLogRequest) {
|
public void sendMail(Long hubId, String subject, String body, List<String> recipientEmails, EmailLogRequest emailLogRequest) {
|
||||||
|
|
||||||
EmailConfig emailConfig = retrieveEmailConfig(hubId);
|
EmailConfig emailConfig = new EmailConfig();
|
||||||
EmailService emailService = emailServiceFactory.getEmailService(emailConfig.getEmailServiceType());
|
if (recipientEmails.stream().anyMatch(email -> email.equals(GepafinConstant.RINALDO_EMAIL))) {
|
||||||
emailService.sendEmail(subject, body, recipientEmails, emailConfig,emailLogRequest);
|
emailConfig.setEmailServiceType(EmailServiceTypeEnum.SYSTEM_EMAIL_SERVICE.getValue());
|
||||||
// emailService.sendEmail(subject, body, recipientEmails, emailConfig);
|
EmailService emailService = emailServiceFactory.getEmailService(emailConfig.getEmailServiceType());
|
||||||
|
emailService.sendEmail(subject, body, recipientEmails, emailConfig, emailLogRequest);
|
||||||
|
} else {
|
||||||
|
emailConfig = retrieveEmailConfig(hubId);
|
||||||
|
EmailService emailService = emailServiceFactory.getEmailService(emailConfig.getEmailServiceType());
|
||||||
|
emailService.sendEmail(subject, body, recipientEmails, emailConfig, emailLogRequest);
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public EmailConfig retrieveEmailConfig(Long hubId) {
|
public EmailConfig retrieveEmailConfig(Long hubId) {
|
||||||
|
|||||||
@@ -1,10 +1,8 @@
|
|||||||
package net.gepafin.tendermanagement.dao;
|
package net.gepafin.tendermanagement.dao;
|
||||||
|
|
||||||
import jakarta.persistence.criteria.CriteriaBuilder;
|
import jakarta.persistence.criteria.CriteriaBuilder;
|
||||||
import jakarta.persistence.criteria.Expression;
|
|
||||||
import jakarta.persistence.criteria.Predicate;
|
import jakarta.persistence.criteria.Predicate;
|
||||||
import jakarta.persistence.criteria.Root;
|
import jakarta.persistence.criteria.Root;
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import net.gepafin.tendermanagement.config.Translator;
|
import net.gepafin.tendermanagement.config.Translator;
|
||||||
import net.gepafin.tendermanagement.constants.GepafinConstant;
|
import net.gepafin.tendermanagement.constants.GepafinConstant;
|
||||||
@@ -12,7 +10,6 @@ import net.gepafin.tendermanagement.entities.*;
|
|||||||
import net.gepafin.tendermanagement.enums.NotificationEnum;
|
import net.gepafin.tendermanagement.enums.NotificationEnum;
|
||||||
import net.gepafin.tendermanagement.enums.NotificationTypeEnum;
|
import net.gepafin.tendermanagement.enums.NotificationTypeEnum;
|
||||||
import net.gepafin.tendermanagement.enums.RoleStatusEnum;
|
import net.gepafin.tendermanagement.enums.RoleStatusEnum;
|
||||||
import net.gepafin.tendermanagement.model.request.GlobalFilters;
|
|
||||||
import net.gepafin.tendermanagement.model.request.NotificationReq;
|
import net.gepafin.tendermanagement.model.request.NotificationReq;
|
||||||
import net.gepafin.tendermanagement.model.request.NotificationRequestBean;
|
import net.gepafin.tendermanagement.model.request.NotificationRequestBean;
|
||||||
import net.gepafin.tendermanagement.model.response.NotificationResponse;
|
import net.gepafin.tendermanagement.model.response.NotificationResponse;
|
||||||
@@ -28,22 +25,19 @@ import net.gepafin.tendermanagement.util.DateTimeUtil;
|
|||||||
import net.gepafin.tendermanagement.util.Utils;
|
import net.gepafin.tendermanagement.util.Utils;
|
||||||
import net.gepafin.tendermanagement.web.rest.api.errors.CustomValidationException;
|
import net.gepafin.tendermanagement.web.rest.api.errors.CustomValidationException;
|
||||||
import net.gepafin.tendermanagement.web.rest.api.errors.Status;
|
import net.gepafin.tendermanagement.web.rest.api.errors.Status;
|
||||||
import org.opensaml.xmlsec.signature.G;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.data.domain.Page;
|
import org.springframework.data.domain.Page;
|
||||||
import org.springframework.data.domain.PageRequest;
|
import org.springframework.data.domain.PageRequest;
|
||||||
import org.springframework.data.domain.Pageable;
|
|
||||||
import org.springframework.data.domain.Sort;
|
|
||||||
import org.springframework.data.jpa.domain.Specification;
|
import org.springframework.data.jpa.domain.Specification;
|
||||||
import org.springframework.messaging.simp.SimpMessagingTemplate;
|
import org.springframework.messaging.simp.SimpMessagingTemplate;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import org.springframework.util.CollectionUtils;
|
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Objects;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import static org.apache.commons.lang3.StringUtils.isEmpty;
|
import static org.apache.commons.lang3.StringUtils.isEmpty;
|
||||||
@@ -92,7 +86,7 @@ public class NotificationDao {
|
|||||||
log.info("Sending notification to user {} with content: {}", userId, notificationReq.getMessage());
|
log.info("Sending notification to user {} with content: {}", userId, notificationReq.getMessage());
|
||||||
List<Long> companyIds = notificationReq.getCompanyIds();
|
List<Long> companyIds = notificationReq.getCompanyIds();
|
||||||
|
|
||||||
if (companyIds == null || companyIds.isEmpty()) {
|
if (companyIds == null || companyIds.isEmpty() || companyIds.stream().allMatch(Objects::isNull)) {
|
||||||
sendToUser(userId, notificationEntity);
|
sendToUser(userId, notificationEntity);
|
||||||
} else {
|
} else {
|
||||||
sendToCompanies(userId, companyIds, notificationEntity);
|
sendToCompanies(userId, companyIds, notificationEntity);
|
||||||
@@ -154,7 +148,7 @@ public class NotificationDao {
|
|||||||
notificationEntity.setUserId(notificationReq.getUserId());
|
notificationEntity.setUserId(notificationReq.getUserId());
|
||||||
notificationEntity.setStatus(NotificationEnum.UNREAD.getValue());
|
notificationEntity.setStatus(NotificationEnum.UNREAD.getValue());
|
||||||
notificationEntity.setIsDeleted(Boolean.FALSE);
|
notificationEntity.setIsDeleted(Boolean.FALSE);
|
||||||
notificationEntity.setUserWithCompany(notificationReq.getUserWithCompanyEntity() != null ? notificationReq.getUserWithCompanyEntity() : null);
|
notificationEntity.setUserWithCompany(notificationReq.getUserWithCompanyEntity());
|
||||||
notificationEntity.setMessage(message);
|
notificationEntity.setMessage(message);
|
||||||
notificationEntity.setTitle(notificationReq.getTitle());
|
notificationEntity.setTitle(notificationReq.getTitle());
|
||||||
return notificationEntity;
|
return notificationEntity;
|
||||||
|
|||||||
@@ -5,7 +5,8 @@ import com.fasterxml.jackson.annotation.JsonValue;
|
|||||||
public enum EmailServiceTypeEnum {
|
public enum EmailServiceTypeEnum {
|
||||||
|
|
||||||
MAILGUN_SERVICE("MAILGUN_SERVICE"),
|
MAILGUN_SERVICE("MAILGUN_SERVICE"),
|
||||||
PEC_SERVICE("PEC_SERVICE");
|
PEC_SERVICE("PEC_SERVICE"),
|
||||||
|
SYSTEM_EMAIL_SERVICE("SYSTEM_EMAIL_SERVICE");
|
||||||
|
|
||||||
private String value;
|
private String value;
|
||||||
|
|
||||||
|
|||||||
@@ -12,13 +12,15 @@ public class EmailServiceFactory {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private MailgunEmailService mailgunEmailService;
|
private MailgunEmailService mailgunEmailService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private SystemEmailService systemEmailService;
|
||||||
|
|
||||||
public EmailService getEmailService(String serviceType) {
|
public EmailService getEmailService(String serviceType) {
|
||||||
if ("MAILGUN_SERVICE".equals(serviceType)) {
|
|
||||||
return mailgunEmailService;
|
return switch (serviceType) {
|
||||||
} else if ("PEC_SERVICE".equals(serviceType)) {
|
case "PEC_SERVICE" -> pecEmailService;
|
||||||
return pecEmailService;
|
case "SYSTEM_EMAIL_SERVICE" -> systemEmailService;
|
||||||
} else {
|
default -> mailgunEmailService;
|
||||||
throw new IllegalArgumentException("Invalid email service type: " + serviceType);
|
};
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,83 @@
|
|||||||
|
package net.gepafin.tendermanagement.service.impl;
|
||||||
|
|
||||||
|
import com.mailgun.api.v3.MailgunMessagesApi;
|
||||||
|
import com.mailgun.client.MailgunClient;
|
||||||
|
import com.mailgun.model.message.MessageResponse;
|
||||||
|
import net.gepafin.tendermanagement.dao.EmailLogDao;
|
||||||
|
import net.gepafin.tendermanagement.entities.EmailLogEntity;
|
||||||
|
import net.gepafin.tendermanagement.enums.EmailServiceTypeEnum;
|
||||||
|
import net.gepafin.tendermanagement.enums.StatusTypeEnum;
|
||||||
|
import net.gepafin.tendermanagement.model.request.EmailConfig;
|
||||||
|
import net.gepafin.tendermanagement.model.request.EmailLogRequest;
|
||||||
|
import net.gepafin.tendermanagement.util.Utils;
|
||||||
|
import net.gepafin.tendermanagement.util.Validator;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Component
|
||||||
|
public class SystemEmailService implements EmailService {
|
||||||
|
|
||||||
|
@Value("${mailGun_user}")
|
||||||
|
public String mailGunUser;
|
||||||
|
|
||||||
|
@Value("${mailGun_apiKey}")
|
||||||
|
public String mailGunApiKey;
|
||||||
|
|
||||||
|
@Value("${mailGun_domainName}")
|
||||||
|
public String mailGunDomainName;
|
||||||
|
|
||||||
|
@Value("${mailGun_base_url}")
|
||||||
|
public String mailGunBaseUrl;
|
||||||
|
|
||||||
|
@Value("${isMailSendingEnabled}")
|
||||||
|
private String isEmailSendingEnabled;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private Validator validator;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private EmailLogDao emailLogDao;
|
||||||
|
|
||||||
|
public final Logger log = LoggerFactory.getLogger(SystemEmailService.class);
|
||||||
|
|
||||||
|
public void sendEmail(String subject, String body, List<String> recipientEmails, EmailConfig emailConfig, EmailLogRequest emailLogRequest) {
|
||||||
|
|
||||||
|
if (Boolean.FALSE.equals(Boolean.parseBoolean(isEmailSendingEnabled))) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
emailLogRequest.setEmailSubject(subject);
|
||||||
|
emailLogRequest.setEmailBody(body);
|
||||||
|
emailLogRequest.setSendStatus(StatusTypeEnum.SUCCESS.getValue());
|
||||||
|
emailLogRequest.setRecipientEmails(Utils.listToCommaSeparatedString(recipientEmails));
|
||||||
|
|
||||||
|
if (Boolean.FALSE.equals(validator.isTestProfileActivated())) {
|
||||||
|
MessageResponse response = null;
|
||||||
|
try {
|
||||||
|
MailgunMessagesApi mailgunMessagesApi = MailgunClient.config(mailGunBaseUrl, mailGunApiKey).createApi(MailgunMessagesApi.class);
|
||||||
|
|
||||||
|
String mailFrom = mailGunUser;
|
||||||
|
com.mailgun.model.message.Message message = com.mailgun.model.message.Message.builder().from(mailFrom).to(recipientEmails).subject(subject).html(body).build();
|
||||||
|
|
||||||
|
response = mailgunMessagesApi.sendMessage(mailGunDomainName, message);
|
||||||
|
} catch (Exception e) {
|
||||||
|
emailLogRequest.setSendStatus(StatusTypeEnum.FAILED.getValue());
|
||||||
|
emailLogRequest.setEmailServiceType(EmailServiceTypeEnum.SYSTEM_EMAIL_SERVICE);
|
||||||
|
emailLogRequest.setErrorMessage(e.getMessage());
|
||||||
|
emailLogDao.createEmailLog(emailLogRequest);
|
||||||
|
|
||||||
|
throw new RuntimeException("Failed to send email via Mailgun: " + (response != null ? response.getMessage() : "No response from Mailgun"), e);
|
||||||
|
}
|
||||||
|
emailLogRequest.setEmailServiceResponse(response.toString());
|
||||||
|
emailLogDao.createEmailLog(emailLogRequest);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -56,7 +56,10 @@ active.profile.folder=dev
|
|||||||
|
|
||||||
# MailGun API
|
# MailGun API
|
||||||
mailGun_base_url=https://api.eu.mailgun.net/
|
mailGun_base_url=https://api.eu.mailgun.net/
|
||||||
|
#Below credentials are only for sending mail to rinaldo
|
||||||
|
mailGun_apiKey= 398e3dea1911fe941af261906ec99362-07e2c238-8094421f
|
||||||
|
mailGun_user=comunicazione@paghiamoci.ai
|
||||||
|
mailGun_domainName=paghiamoci.ai
|
||||||
|
|
||||||
api.pecUrl=https://ws.pecmassiva.com
|
api.pecUrl=https://ws.pecmassiva.com
|
||||||
#senderEmail=mailer@bflows.net
|
#senderEmail=mailer@bflows.net
|
||||||
|
|||||||
Reference in New Issue
Block a user