All Downloads are FREE. Search and download functionalities are using the official Maven repository.

me.jpomykala.starters.springhoc.mail.MailService Maven / Gradle / Ivy

package me.jpomykala.starters.springhoc.mail;

import com.amazonaws.services.simpleemail.AmazonSimpleEmailService;
import com.amazonaws.services.simpleemail.model.Content;
import com.amazonaws.services.simpleemail.model.Destination;
import com.amazonaws.services.simpleemail.model.Message;
import com.amazonaws.services.simpleemail.model.SendEmailRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.event.EventListener;
import org.springframework.lang.NonNull;

import java.util.Optional;

public class MailService {

  private Logger log = LoggerFactory.getLogger(MailService.class);

  private final MailServiceProperties springHocMailProperties;
  private final AmazonSimpleEmailService simpleEmailService;

  public MailService(MailServiceProperties springHocMailProperties, AmazonSimpleEmailService simpleEmailService) {
    this.springHocMailProperties = springHocMailProperties;
    this.simpleEmailService = simpleEmailService;
  }

  @EventListener(EmailRequest.class)
  public void onEmailMessageRequest(@NonNull EmailRequest emailRequest) {
    sendEmail(emailRequest);
  }

  private void sendEmail(@NonNull EmailRequest emailRequest) {
    SendEmailRequest sendEmailRequest = new SendEmailRequest()
            .withMessage(emailRequest.getMessage())
            .withReplyToAddresses(emailRequest.getReplyTo())
            .withDestination(emailRequest.getDestination());
    sendMailMessage(sendEmailRequest);
  }

  private void sendMailMessage(@NonNull SendEmailRequest emailRequest) {
    String subject = Optional.ofNullable(emailRequest)
            .map(SendEmailRequest::getMessage)
            .map(Message::getSubject)
            .map(Content::getData)
            .orElse("");

    Destination destination = emailRequest.getDestination();
    log.debug("send email to {}", subject, destination);
    emailRequest.setSource(springHocMailProperties.getSenderEmailAddress());
    simpleEmailService.sendEmail(emailRequest);
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy