Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #26417

Re: java mail and thread

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)

Show all headers | View raw


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


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