78 lines
3.0 KiB
Java
78 lines
3.0 KiB
Java
package net.gepafin.tendermanagement.service.impl;
|
|
|
|
import com.mashape.unirest.http.HttpResponse;
|
|
import com.mashape.unirest.http.Unirest;
|
|
import net.gepafin.tendermanagement.constants.GepafinConstant;
|
|
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.service.feignClient.MailgunFeignClient;
|
|
import net.gepafin.tendermanagement.util.Utils;
|
|
import net.gepafin.tendermanagement.util.Validator;
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import java.util.Base64;
|
|
import java.util.List;
|
|
|
|
@Service
|
|
public class MailgunEmailService implements EmailService {
|
|
|
|
@Value("${isMailSendingEnabled}")
|
|
private String isEmailSendingEnabled;
|
|
|
|
@Autowired
|
|
private Validator validator;
|
|
|
|
@Autowired
|
|
private EmailLogDao emailLogDao;
|
|
|
|
@Override
|
|
public void sendEmail(String subject, String body, List<String> recipientEmails, EmailConfig emailConfig, EmailLogRequest emailLogRequest) {
|
|
|
|
if (Boolean.FALSE.equals(Boolean.parseBoolean(isEmailSendingEnabled))) {
|
|
return;
|
|
}
|
|
|
|
String url = emailConfig.getUrl();
|
|
String from = emailConfig.getSender();
|
|
String apiKey = emailConfig.getApiKey();
|
|
String authHeader = "Basic " + Base64.getEncoder().encodeToString(("api:" + apiKey).getBytes());
|
|
|
|
// Send email via Mailgun API
|
|
HttpResponse<String> response2=null;
|
|
if (Boolean.FALSE.equals(validator.isTestProfileActivated())) {
|
|
|
|
emailLogRequest.setRecipientEmails(Utils.listToCommaSeparatedString(recipientEmails));
|
|
try {
|
|
Unirest.setTimeouts(0, 0);
|
|
response2 = Unirest.post(url)
|
|
.header("Authorization", authHeader)
|
|
// .header("content-type", "multipart/form-data")
|
|
.field("from", from)
|
|
.field("to", recipientEmails)
|
|
.field("subject", subject)
|
|
.field("html", body)
|
|
.asString();
|
|
}catch(Exception e) {
|
|
emailLogRequest.setSendStatus(StatusTypeEnum.FAILED.getValue());
|
|
emailLogRequest.setEmailServiceType(EmailServiceTypeEnum.MAILGUN);
|
|
emailLogRequest.setErrorMessage(e.getMessage());
|
|
EmailLogEntity emailLogEntity= emailLogDao.createEmailLog(emailLogRequest);
|
|
throw new RuntimeException("Failed to send email via Mailgun: " + response2.getStatus());
|
|
}
|
|
emailLogRequest.setEmailServiceResponse(response2.getBody());
|
|
}
|
|
emailLogRequest.setEmailServiceType(EmailServiceTypeEnum.MAILGUN);
|
|
EmailLogEntity emailLogEntity= emailLogDao.createEmailLog(emailLogRequest);
|
|
|
|
}
|
|
}
|
|
|
|
|