Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #26417
| Date | 2013-10-25 12:30 +0100 |
|---|---|
| From | lipska the kat <"nospam at neversurrender dot co dot uk"> |
| Organization | Trollbusters 3 |
| Newsgroups | comp.lang.java.programmer |
| Subject | Re: java mail and thread |
| References | <6615a997-f18f-42b0-812e-de1cbadf8341@googlegroups.com> |
| Message-ID | <yrCdnYcjW9fXy_fPnZ2dnUVZ8o2dnZ2d@bt.com> (permalink) |
On 24/10/13 22:28, andros976@gmail.com wrote:
> Good evening to all .
> I'm designing an application that has the task of sending the email automatically taking the recipients from a db.
> To send email I created a special class that receives the string with the recipient's address and sends mail.
> The instruction to send the message:
>
> Transport.send (msg ) ;
>
> I noticed that this statement takes a bit of seconds before releasing
> flow and therefore are unable to use the other functions of the application . I thought , therefore, to use a technology where each object of the class that sends the email implements Runnable and then i use it like a thread.
> I noticed , however, that there are problems because sometimes 20 over 50 emails fail and the instruction that give me the error is
>
> Transport.send (msg ) ;
>
> java.net.SocketException : Connection closed by remote host
>
> and seems to be the fact that the thread dies too fast after the statement
> Transport.send (msg ) ;
> So I inserted a Thread.sleep ( 10000 ) ;
> but sometimes I goes equally mistaken, then I tried to employ
> t.join ();
> but it blocks the flow (basically waiting for the thread to end it all before giving way to another )
> What can I do ?
> If you need I can write a few lines of code to make you understand how I'm implementing the functionality described
>
>
> I look forward ideas
>
> thanks
>
How about something like this (outline only, off the top of my head)
If you want to send the same message to all recipients
then simply.
...
Transport transport = session.getTransport(TRANSPORT);
//set up session
//set up message
MimeMessage message = new MimeMessage(session);
...
//for each recipient
message.addRecipient(Message.RecipientType.TO, toAddress); //or CC, BCC
...
Transport transport = session.getTransport("smtp");
transport.connect(HOST, USERNAME, PASSWORD);
transport.sendMessage(message, message.getAllRecipients());
transport.close();
wrap it in a thread if you don't want the main to block
If you want to send a different message to each recipient then something
like
class MailMachine implements Runnable{
EmailAddressServer eas;
EmailMessageServer ems;
...
List<String> emailAddresses = eas.getAddresses();
...
//set up mail session
Session session = Session.getInstance(properties);
...
public void run(){
for(String email: emailAddresses){
MimeMessage message = new MimeMessage(session);
String msg = ems.getMessage(email); //whatever
//blocking IO
...
Transport.send(message);
...
}
}
}
public class Foo{
main(){
// do stuff
...
MailMachine mm = new MailMachine();
Thread t = new Thread(mm);
t.start();
...
//do more stuff
}
}
--
Lipska the Kat©: Troll hunter, sandbox destroyer
and farscape dreamer of Aeryn Sun
GNU/Linux user #560883 - http://www.linuxcounter.net
Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
java mail and thread andros976@gmail.com - 2013-10-24 14:28 -0700
Re: java mail and thread Knute Johnson <nospam@rabbitbrush.frazmtn.com> - 2013-10-24 15:07 -0700
Re: java mail and thread lipska the kat <"nospam at neversurrender dot co dot uk"> - 2013-10-25 12:30 +0100
Re: java mail and thread Joerg Meier <joergmmeier@arcor.de> - 2013-10-25 13:45 +0200
Re: java mail and thread Robert Klemme <shortcutter@googlemail.com> - 2013-10-26 13:07 +0200
Re: java mail and thread andros976@gmail.com - 2013-10-27 01:46 -0700
csiph-web