前提・実現したいこと
Springからthymeilafをテンプレートに利用してHTMLメール送信する機能を実装
していたところ、toが1つのアドレスにしか対応していないことに気づきました。
これを、複数送信するためにはどこにどんな処理を追加すればよろしいでしょうか…?
メールアドレスを配列で取ってこないと複数送信ができないことは分かっているので、
配列をどうやってtoに持ってくるかが知りたいです。
よろしくお願いします。
発生している問題・エラーメッセージ
メールが複数人に送れない
該当のソースコード
MailSendService.java
java
1package com.paidmanage.service.primary; 2 3import java.nio.charset.StandardCharsets; 4 5import javax.mail.internet.MimeMessage; 6 7import org.springframework.beans.factory.annotation.Autowired; 8import org.springframework.mail.javamail.JavaMailSender; 9import org.springframework.mail.javamail.MimeMessageHelper; 10import org.springframework.mail.javamail.MimeMessagePreparator; 11import org.springframework.stereotype.Service; 12import org.thymeleaf.context.Context; 13import org.thymeleaf.spring5.SpringTemplateEngine; 14import org.thymeleaf.templatemode.TemplateMode; 15import org.thymeleaf.templateresolver.ClassLoaderTemplateResolver; 16 17@Service 18public class SendMailService { 19 @Autowired 20 private JavaMailSender javaMailSender; 21 22 public void sendMail(Context context,String email,String title,String htmlLocation) { 23 24 javaMailSender.send(new MimeMessagePreparator() { 25 26 @Override 27 public void prepare(MimeMessage mimeMessage) throws Exception { 28 MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, 29 StandardCharsets.UTF_8.name()); 30 helper.setFrom("hogehoge@sample"); 31 helper.setTo(email); 32 helper.setSubject(title); 33 helper.setText(getMailBody(htmlLocation, context), true); 34 } 35 }); 36 37 38 } 39 40 private String getMailBody(String templateName, Context context) { 41 SpringTemplateEngine templateEngine = new SpringTemplateEngine(); 42 templateEngine.setTemplateResolver(mailTemplateResolver()); 43 return templateEngine.process(templateName, context); 44 45 } 46 47 private ClassLoaderTemplateResolver mailTemplateResolver() { 48 ClassLoaderTemplateResolver templateResolver = new ClassLoaderTemplateResolver(); 49 templateResolver.setTemplateMode(TemplateMode.HTML); 50 templateResolver.setPrefix("mailtemplate/"); 51 templateResolver.setSuffix(".html"); 52 templateResolver.setCharacterEncoding("UTF-8"); 53 templateResolver.setCacheable(true); 54 return templateResolver; 55 } 56 57} 58
Controller.java
java
1@Controller 2public class ItemController { 3 @Autowired 4 SendMailService sendMailService; 5 //メール送信 6 @RequestMapping("/sendmail") 7 public String sendmail() { 8 //出力内容設定($で渡す値) 9 Context context = new Context(); 10 context.setVariable("name", "ほげ"); 11 context.setVariable("name2", "ほげほげ"); 12 String email="×××@co.jp"; 13 //内容、宛先、タイトル、HTMLファイル指定 14 sendMailService.sendMail(context,email,"コントローラーから","samplemail"); 15 return "redirect:/"; 16 } 17} 18
samplemail.html
java
1<!DOCTYPE html> 2<html xmlns:th="http://www.thymeleaf.org"> 3<body> 4 <h2 style="margin-bottom: 20px;" th:inline="text" th:text="|${name}様|"></h2> 5 <h2 style="margin-bottom: 20px;" th:inline="text">[[${name2}]]様</h2> 6 <p>テストメール</p> 7</body> 8</html>
試したこと
以下のサイトからMimeMessageを使った複数送信の例を発見したのですが、私の使っているものに
MimeMessage msg = new MimeMessage(session);が存在しないので使い方が分かりませんでした。
【備忘録】String型の配列に格納されたメールアドレスをInternetAddress[]型に変換して複数の宛先にメールを送信【java】
そもそも、ThymeleafをメールテンプレートにしてHTMLメールを送信するを参考にメール機能を実装したのですがMailSendServiceで行っていることがほとんど理解できていません…
補足情報(FW/ツールのバージョンなど)
初心者で至らない点があると思いますがよろしくお願いします。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。