|
|
@@ -0,0 +1,158 @@
|
|
|
+package jp.yamoto.farm.common.core.service;
|
|
|
+
|
|
|
+import jakarta.mail.MessagingException;
|
|
|
+import jakarta.mail.internet.MimeMessage;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.core.env.Environment;
|
|
|
+import org.springframework.core.io.ByteArrayResource;
|
|
|
+import org.springframework.core.io.FileSystemResource;
|
|
|
+import org.springframework.mail.SimpleMailMessage;
|
|
|
+import org.springframework.mail.javamail.JavaMailSender;
|
|
|
+import org.springframework.mail.javamail.MimeMessageHelper;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.web.multipart.MultipartFile;
|
|
|
+
|
|
|
+import java.io.File;
|
|
|
+import java.io.IOException;
|
|
|
+import java.util.Arrays;
|
|
|
+import java.util.Date;
|
|
|
+
|
|
|
+@Service
|
|
|
+public class MailService {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private JavaMailSender mailSender;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private Environment env;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * テキストメールの送信
|
|
|
+ */
|
|
|
+ public void sendSimpleEmail(String to, String subject, String text) {
|
|
|
+ SimpleMailMessage message = new SimpleMailMessage();
|
|
|
+ message.setFrom(this.getFromEmail());
|
|
|
+ message.setTo(to);
|
|
|
+ message.setSubject(subject);
|
|
|
+ message.setText(text);
|
|
|
+ message.setSentDate(new Date());
|
|
|
+
|
|
|
+ mailSender.send(message);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * HTNLメールの送信
|
|
|
+ */
|
|
|
+ public void sendHtmlEmail(String to, String subject, String htmlContent)
|
|
|
+ throws MessagingException {
|
|
|
+ MimeMessage message = mailSender.createMimeMessage();
|
|
|
+ MimeMessageHelper helper = new MimeMessageHelper(message, true, "UTF-8");
|
|
|
+
|
|
|
+ helper.setFrom(this.getFromEmail());
|
|
|
+ helper.setTo(to);
|
|
|
+ helper.setSubject(subject);
|
|
|
+ helper.setText(htmlContent, true);
|
|
|
+ helper.setSentDate(new Date());
|
|
|
+
|
|
|
+ mailSender.send(message);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 添付ファイル付きメールの送信
|
|
|
+ */
|
|
|
+ public void sendEmailWithAttachment(String to, String subject, String text,
|
|
|
+ File attachment) throws MessagingException {
|
|
|
+
|
|
|
+ MimeMessage message = mailSender.createMimeMessage();
|
|
|
+ MimeMessageHelper helper = new MimeMessageHelper(message, true, "UTF-8");
|
|
|
+
|
|
|
+ helper.setFrom(this.getFromEmail());
|
|
|
+ helper.setTo(to);
|
|
|
+ helper.setSubject(subject);
|
|
|
+ helper.setText(text);
|
|
|
+ helper.setSentDate(new Date());
|
|
|
+
|
|
|
+ // 添付ファイルの追加
|
|
|
+ helper.addAttachment(attachment.getName(), attachment);
|
|
|
+
|
|
|
+ mailSender.send(message);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 複数の添付ファイル付きメールを送信
|
|
|
+ */
|
|
|
+ public void sendEmailWithAttachments(String to, String subject, String text,
|
|
|
+ MultipartFile[] attachments)
|
|
|
+ throws MessagingException, IOException {
|
|
|
+
|
|
|
+ MimeMessage message = mailSender.createMimeMessage();
|
|
|
+ MimeMessageHelper helper = new MimeMessageHelper(message, true, "UTF-8");
|
|
|
+
|
|
|
+ helper.setFrom(this.getFromEmail());
|
|
|
+ helper.setTo(to);
|
|
|
+ helper.setSubject(subject);
|
|
|
+ helper.setText(text);
|
|
|
+ helper.setSentDate(new Date());
|
|
|
+
|
|
|
+ for (MultipartFile file : attachments) {
|
|
|
+ if (!file.isEmpty()) {
|
|
|
+ helper.addAttachment(file.getOriginalFilename(),
|
|
|
+ new ByteArrayResource(file.getBytes()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ mailSender.send(message);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * インラインリソース付きメールの送信(画像など)
|
|
|
+ */
|
|
|
+ public void sendEmailWithInlineResource(String to, String subject, String htmlContent,
|
|
|
+ String resourcePath, String contentId)
|
|
|
+ throws MessagingException {
|
|
|
+ MimeMessage message = mailSender.createMimeMessage();
|
|
|
+ MimeMessageHelper helper = new MimeMessageHelper(message, true, "UTF-8");
|
|
|
+
|
|
|
+ helper.setFrom(this.getFromEmail());
|
|
|
+ helper.setTo(to);
|
|
|
+ helper.setSubject(subject);
|
|
|
+ helper.setText(htmlContent, true);
|
|
|
+ helper.setSentDate(new Date());
|
|
|
+
|
|
|
+ FileSystemResource res = new FileSystemResource(new File(resourcePath));
|
|
|
+ helper.addInline(contentId, res);
|
|
|
+
|
|
|
+ mailSender.send(message);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 一括送信メール
|
|
|
+ */
|
|
|
+ public void sendBatchEmail(String[] toList, String subject, String text) {
|
|
|
+ Arrays.stream(toList).forEach(to -> sendSimpleEmail(to, subject, text));
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * CCと密送付きのメールを送信する
|
|
|
+ */
|
|
|
+ public void sendEmailWithCcBcc(String to, String[] cc, String[] bcc,
|
|
|
+ String subject, String text) throws MessagingException {
|
|
|
+ MimeMessage message = mailSender.createMimeMessage();
|
|
|
+ MimeMessageHelper helper = new MimeMessageHelper(message, true, "UTF-8");
|
|
|
+
|
|
|
+ helper.setFrom(this.getFromEmail());
|
|
|
+ helper.setTo(to);
|
|
|
+ if (cc != null) helper.setCc(cc);
|
|
|
+ if (bcc != null) helper.setBcc(bcc);
|
|
|
+ helper.setSubject(subject);
|
|
|
+ helper.setText(text);
|
|
|
+ helper.setSentDate(new Date());
|
|
|
+
|
|
|
+ mailSender.send(message);
|
|
|
+ }
|
|
|
+
|
|
|
+ private String getFromEmail(){
|
|
|
+ return env.getProperty("spring.mail.from");
|
|
|
+ }
|
|
|
+
|
|
|
+}
|