Java 将邮件发送到收件人数组列表
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/19853828/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Send mail to an array list of recipients
提问by toink
I got this tutorial here...
我在这里得到了这个教程...
how to send an email from jsp/servlet?
However What if I have list of email addresses from DATABASE where I want to send the email to
但是,如果我有来自 DATABASE 的电子邮件地址列表,我想将电子邮件发送到
TestMail class
测试邮件类
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 = "[email protected]";
String to = "[email protected]";
String subject = "Interesting news";
String message = "I've got JavaMail to work!";
mailer.send(from, to, subject, message);
}
}
jsp
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 = "[email protected]";
}
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);
}
}
}
采纳答案by Ravi
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);
回答by Anuj Patel
You can retrieve ArrayListof emails in your init method, convert that ArrayListof Stringto array of Addressobjects.
您可以检索ArrayList您的init方法的电子邮件,该转换ArrayList的String到的数组Address对象。
Pass that array in setRecipients()method of your message and you're done.
将该数组传递到setRecipients()您的消息方法中,您就完成了。
Example :
例子 :
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));
}
}
回答by BURHANUDDIN
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);
it works.. try this.
它有效..试试这个。
回答by Jaspal Jessy
ArrayList<String> listOfEmails = //getListofEmails
InternetAddress[] address = listOfEmails.stream()
.toArray(InternetAddress[]::new);

