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 ArrayList
of emails in your init method, convert that ArrayList
of String
to array of Address
objects.
您可以检索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);