電子メールは、String[] to
配列の最後の電子メールアドレスにのみ送信されます。アレイに追加されたすべてのメールアドレスに送信するつもりです。どうすればそれを機能させることができますか?
public void sendMail(String from, String[] to, String subject, String msg, List attachments) throws MessagingException {
// Creating message
sender.setHost("smtp.gmail.com");
MimeMessage mimeMsg = sender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMsg, true);
Properties props = new Properties();
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", "425");
Session session = Session.getDefaultInstance(props, null);
helper.setFrom(from);
helper.setTo(to);
helper.setSubject(subject);
helper.setText(msg + "<html><body><h1>hi welcome</h1><body></html", true);
Iterator it = attachments.iterator();
while (it.hasNext()) {
FileSystemResource file = new FileSystemResource(new File((String) it.next()));
helper.addAttachment(file.getFilename(), file);
}
// Sending message
sender.send(mimeMsg);
}
次の4つの方法を選択できます。この場合に役立つ2つの方法の例を示しました。以下のコメンテーターからのこの情報をまとめました。
helper.setTo(InternetAddress.parse("[email protected],[email protected]"))
helper.setTo(new String[]{"[email protected]", "[email protected]"});
より良い方法は、複数の受信者のアドレスを含む配列を作成することです。
MimeMessageHelper helper = new MimeMessageHelper( message, true );
helper.setTo( String[] to );
このようにしてみてください。
helper.setTo(InternetAddress.parse("[email protected],[email protected]"))
代わりにこれを試すことができます
helper.setTo(to);
String multipleEmailIds = "[email protected], [email protected]"
mimeMsg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(multipleEmailIds ));
Deinumのコメントで提案されているように、「to」属性をspring.xmlファイルの配列として宣言し、値を渡し、メソッドsetTo(string[])
を使用するのがより良いアプローチだと思います。プロセスは次のようにxmlファイルで 'to'を定義します
_<property name="to">
<array>
<value>[email protected]</value>
<value>[email protected]</value>
</array>
</property>
_
次に、複数の受信者のアドレスを含むこの配列のゲッターセッターメソッドを生成し、それをsetTo(String[])
メソッドに次のように渡します。
_helper.setTo(to);
_