web-dev-qa-db-ja.com

Springで複数の受信者にメールを送信する方法

電子メールは、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);
}
20
Program-Me-Rev

次の4つの方法を選択できます。この場合に役立つ2つの方法の例を示しました。以下のコメンテーターからのこの情報をまとめました。

helper.setTo(InternetAddress.parse("[email protected],[email protected]"))
helper.setTo(new String[]{"[email protected]", "[email protected]"});

enter image description here

19
Jens

より良い方法は、複数の受信者のアドレスを含む配列を作成することです。

    MimeMessageHelper helper = new MimeMessageHelper( message, true );
    helper.setTo( String[] to );
6
Surya Nair

このようにしてみてください。

helper.setTo(InternetAddress.parse("[email protected],[email protected]")) 
2
Sree

代わりにこれを試すことができます

helper.setTo(to);

String multipleEmailIds = "[email protected], [email protected]"
mimeMsg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(multipleEmailIds ));
1
Sreenath S

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);
_
0
Er.Naved Ali