2

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

如何从 jsp/servlet 发送电子邮件?

但是,如果我有来自我想将电子邮件发送到的 DATABASE 的电子邮件地址列表怎么办?

测试邮件类

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>

小服务程序

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

4 回答 4

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);
于 2013-11-08T07:55:46.807 回答
1

ArrayList您可以在 init 方法中检索电子邮件,将其转换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));
    }
}
于 2013-11-08T07:53:09.137 回答
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);

它有效..试试这个。

于 2017-08-30T09:53:58.570 回答
0
ArrayList<String> listOfEmails = //getListofEmails

InternetAddress[] address = listOfEmails.stream()
                 .toArray(InternetAddress[]::new);
于 2020-04-27T19:26:34.457 回答