我在这里得到了这个教程......
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);
}
}
}
答案 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);