Done ticket GEPAFINBE-199 Implemented the code to send the email to rinaldo from mailgun service like bflows.
This commit is contained in:
@@ -12,13 +12,15 @@ public class EmailServiceFactory {
|
||||
@Autowired
|
||||
private MailgunEmailService mailgunEmailService;
|
||||
|
||||
@Autowired
|
||||
private SystemEmailService systemEmailService;
|
||||
|
||||
public EmailService getEmailService(String serviceType) {
|
||||
if ("MAILGUN_SERVICE".equals(serviceType)) {
|
||||
return mailgunEmailService;
|
||||
} else if ("PEC_SERVICE".equals(serviceType)) {
|
||||
return pecEmailService;
|
||||
} else {
|
||||
throw new IllegalArgumentException("Invalid email service type: " + serviceType);
|
||||
}
|
||||
|
||||
return switch (serviceType) {
|
||||
case "PEC_SERVICE" -> pecEmailService;
|
||||
case "SYSTEM_EMAIL_SERVICE" -> systemEmailService;
|
||||
default -> mailgunEmailService;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user