将邮件发送到收件人的数组列表

时间:2013-11-08 07:37:44

标签: java jsp servlets javamail netbeans-7

我在这里得到了这个教程......

how to send an email from jsp/servlet?

但是,如果我有DATABASE中要将电子邮件发送到

的电子邮件地址列表,该怎么办?

TestMail类

public class TestMail {
    public static void main(String... args) throws Exception {
        // Create mailer.
        String hostname = "smtp.example.com";
        int port = 2525;
        String username = "nobody";
        String password = "idonttellyou";
        Mailer mailer = new Mailer(hostname, port, username, password);

        // Send mail.
        String from = "john.doe@example.com";
        String to = "jane.doe@example.com";
        String subject = "Interesting news";
        String message = "I've got JavaMail to work!";
        mailer.send(from, to, subject, message);
    }
}

JSP

<form action="contact" method="post">
    <p>Your email address: <input name="email"></p>
    <p>Mail subject: <input name="subject"></p>
    <p>Mail message: <textarea name="message"></textarea></p>
    <p><input type="submit"><span class="message">${message}</span></p>
</form>

的Servlet

public class ContactServlet extends HttpServlet {
    private Mailer mailer;
    private String to;

    public void init() {
        // Create mailer. You could eventually obtain the settings as
        // web.xml init parameters or from some properties file.
        String hostname = "smtp.example.com";
        int port = 2525;
        String username = "nobody";
        String password = "forgetit";
        this.mailer = new Mailer(hostname, port, username, password);
        this.to = "you@example.com";
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String email = request.getParameter("email");
        String subject = request.getParameter("subject");
        String message = request.getParameter("message");
        // Do some validations and then send mail:

        try {
            mailer.send(email, to, subject, message);
            request.setAttribute("message", "Mail succesfully sent!");
            request.getRequestDispatcher("/WEB-INF/contact.jsp").forward(request, response);
        } catch (MailException e) {
            throw new ServletException("Mailer failed", e);
        }
    }
}

4 个答案:

答案 0 :(得分:6)

      ArrayList email= new ArrayList();
      while(rs.next()) {

                email.add(rs.getString("column_name"));
      }


    Message message = new MimeMessage(session);

   InternetAddress[] address = new InternetAddress[email.size()];
    for (int i = 0; i < email.size(); i++) {
        address[i] = new InternetAddress(email.get(i));
    }
     message.setRecipients(Message.RecipientType.TO, address);

答案 1 :(得分:1)

您可以在init方法中检索ArrayList封电子邮件,将ArrayList String转换为Address个对象的数组。

在邮件的setRecipients()方法中传递该数组,然后就完成了。

示例:

ArrayList<String> listOfEmails    = SOME DB CALL TO GET ARRAYLIST OF EMAILS;
ArrayList<InternetAddress> listOfToAddress = new ArrayList<InternetAddress>();

for (String temp : listOfEmails) {
    if (temp != null) {
        listOfToAddress.add(new InternetAddress(temp));
    }
}

答案 2 :(得分:0)

ArrayList email= new ArrayList();
  while(rs.next()) {

            email.add(rs.getString("column_name"));
  }


Message message = new MimeMessage(session);

InternetAddress[] address = new InternetAddress[email.size()];
for (int i = 0; i < email.size(); i++) {
    address[i] = new InternetAddress(email.get(i));
}
 //message.setRecipients(Message.RecipientType.TO, address); this not work
  message.addRecipients(Message.RecipientType.TO, address);

它有效..试试这个。

答案 3 :(得分:0)

ArrayList<String> listOfEmails = //getListofEmails

InternetAddress[] address = listOfEmails.stream()
                 .toArray(InternetAddress[]::new);