package net.gepafin.tendermanagement.service.impl; import net.gepafin.tendermanagement.model.request.EmailConfig; import net.gepafin.tendermanagement.service.feignClient.MailgunFeignClient; import net.gepafin.tendermanagement.util.Validator; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import java.util.Base64; import java.util.List; @Service public class MailgunEmailService implements EmailService { @Autowired private MailgunFeignClient mailgunFeignClient; @Value("${isMailSendingEnabled}") private String isEmailSendingEnabled; @Autowired private Validator validator; @Override public void sendEmail(String subject, String body, List recipientEmails, EmailConfig emailConfig) { if (Boolean.FALSE.equals(Boolean.parseBoolean(isEmailSendingEnabled))) { return; } String domain = emailConfig.getDomain(); String from = emailConfig.getSender(); String apiKey = emailConfig.getApiKey(); String authHeader = "Basic " + Base64.getEncoder().encodeToString(("api:" + apiKey).getBytes()); // Send email via Mailgun API if (Boolean.FALSE.equals(validator.isTestProfileActivated())) { ResponseEntity response = mailgunFeignClient.sendEmail(domain, from, List.of("rajeshkhoreupwork@gmail.com"), subject, body, authHeader); if (!response.getStatusCode().is2xxSuccessful()) { throw new RuntimeException("Failed to send email via Mailgun: " + response.getStatusCode()); } } } }