Home
Back
Classi Java


Mail Alerter

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

import java.util.Properties;

import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class MailAlerter {
     public MailAlerter() {
     String[] recipients = new String[1];
     recipients[0] = "astronomer@tiscali.it";
     try {
     this.postMail(recipients, recNum, carbon, carNum,"Mail di prova", "astronomer@tiscali.it","mail.libero.it");
     } catch (MessagingException e) {e.printStackTrace();}
 }
 public static void main(String[] args) {
     MailAlerter ma = new MailAlerter();
   
 }
 public void postMail( String recipients[ ], int recNum, String carbon[], int carNum, String subject,
     String message , String attachment, String from, String smtpHost) throws MessagingException
     {
     Properties props = new Properties();
     //indicare l'indirizzo del server smtp che si intende usare
     props.put("mail.smtp.host", smtpHost);
 Session session = Session.getDefaultInstance(props, null);
     Message msg = new MimeMessage(session);
 InternetAddress addressFrom = new InternetAddress(from);
     msg.setFrom(addressFrom);
 InternetAddress[] addressTo = new InternetAddress[recipients.length];
     InternetAddress[] addressCC = new InternetAddress[recipients.length];
 for (int i = 0; i < recNum; i++){
     addressTo[i] = new InternetAddress(recipients[i]);}
 for (int i = 0; i < carNum; i++){
     addressCC[i] = new InternetAddress(carbon[i]);}
 msg.setRecipients(Message.RecipientType.TO, addressTo);
     msg.setRecipients(Message.RecipientType.CC, addressCC);
 msg.setSubject(subject);
     msg.setContent(message, "text/plain");
     msg.setFileName(attachment);
     Transport.send(msg);
     }
 public void readFile(String fileName) throws FileNotFoundException, IOException {
     BufferedReader recipients = new BufferedReader(new FileReader("recipients.txt"));
     BufferedReader message = new BufferedReader(new FileReader(fileName));
 while(true)
     {
     String line = recipients.readLine();
     if(line==null) break;
     System.out.println(line);
     }
 }
 
 //per inviare una mail se il contenuto di una data directory è cambiato.
     public void folderChanged(String foldername, String[] recipients, String from, String smtpHost)
     {
     MailAlerter ma = new MailAlerter();
     File folder = new File(foldername);
     if (!folder.isDirectory()){
     System.out.println("["+ foldername + "] is not a directory." );
     return;
     }
     Vector oldFiles = new Vector(Arrays.asList(folder.list()));
 while (true){
     try{
     Vector deleted = new Vector();
     Vector newFiles = new Vector(Arrays.asList(folder.list()));
 while (!oldFiles.isEmpty()){
 String element = (String)oldFiles.firstElement();
     oldFiles.removeElementAt(0);
     if (newFiles.contains(element)){
     newFiles.remove(element);
     }
     else {
     deleted.add(element);
     }
     }
 String message = "Folder " + foldername + " changed!";
     message += "\n Added files:";
     for (int i=0;i<newFiles.size();i++)
     message += "\n " + (String)newFiles.elementAt(i);
     message += "\n Deleted files:";
     for (int i=0;i<deleted.size();i++)
     message += "\n " + (String)deleted.elementAt(i);
     if ((!deleted.isEmpty())||(!newFiles.isEmpty())){
     ma.postMail(recipients,recNum, carbon,carNum,"[MailAlerter] Folder changed",
     message, from, smtpHost);
     System.out.println("Folder changed, mail sent.");
     }
     else
     System.out.println("Folder not changed: "+
     (folder.list()).length);
 oldFiles = new Vector(Arrays.asList(folder.list()));
     //aspettiamo 10 minuti fra un controllo e l'altro
     Thread.sleep(10 * 60 * 1000);
     }catch(Exception e){
     System.out.println("Error: " + e);
     }
 }
 }

}