%@page import="com.edeal.frontline.helper.custom.ReturnedMailModelHelper"%> <%@page import="javax.mail.Store"%> <%@page import="javax.mail.Folder"%> <%@page import="javax.mail.URLName"%> <%@page import="javax.mail.Session"%> <%@page import="javax.mail.NoSuchProviderException"%> <%@page import="javax.mail.internet.MimeMessage"%> <%@page import="java.io.IOException"%><% /****************************************************************************** * Copyright (c) 2000-2004 e-Deal * * e-Deal S.A. * 55 rue Brillat Savarin * 75013 Paris * France * * T: +33 (0)1 53 80 80 30 * F: +33 (0)1 73 01 69 77 * http://www.e-deal.com * * La diffusion de ce code source sous quelque forme que ce soit sans * l'autorisation de E-DEAL est interdite. * * Vous êtes autorisés à modifier ce code source uniquement pour votre usage * propre et sous réserve que les mentions de copyright demeurent intactes. * * Ce code est fourni en l'état. Aucune garantie d'aucune sorte, explicite ou * implicite n'est donnée. En aucun cas E-DEAL ne pourra être tenu pour * responsable des dommages pouvant résulter de l'utilisation de ce code * source. * * ******************************************************************************/ %><%@page session="true" import="com.edeal.frontline.*,java.util.*,javax.mail.*,java.sql.*"%><% final org.apache.commons.logging.Log logger = org.apache.commons.logging.LogFactory.getLog(getClass()); String contextPath = (String)session.getAttribute("contextPath"); if(contextPath == null) { contextPath = request.getContextPath(); } FlContext context = Frontline.getContext(contextPath); DataDictionary dico = context.getDataDictionary(); String id = Utils.getRequestParameter(context,request,"id"); System.err.println("Etape 1 je commence la comparaison id ud modéle est " + id); ReturnedMailModelBean modelbean = new ReturnedMailModelBean(id,context); //je me connecte à demosales pour recuperer le mail String mailServer = "192.168.0.4"; String mailProtocol="POP"; String maillogin= "o.nidlahcen"; String mailPassword= "Amab1s0mar!"; //je parse le mail // traitment d'ouverture de la boite aux lettres pour prendre les mails int mailTrashed = 0; String mailMaxSize = null; int mailSize = 2; String mailFolder = null; String trashMailBody = null; Session sessionMail = null; Store store = null; Folder folder = null; int[] result = { 0, 0 }; int totalMsgs = 0; try { System.err.println("Etape 2 je me connecte à la boite"); mailFolder = "INBOX"; URLName url = new URLName(mailProtocol, mailServer, -1, mailFolder, maillogin, mailPassword); Properties props = (Properties) System.getProperties().clone(); props.put("mail.smtp.host", mailServer); sessionMail = Session.getInstance(props, null); store = null; try { store = sessionMail.getStore("pop3"); store.connect(mailServer,maillogin,mailPassword); System.err.println("Etape 3 connecté OK "); } catch (NoSuchProviderException ex) { throw new FrontlineException("[ReturnsMailAction.processReturnedMail()] bad mail server address (" + ex.getMessage() + ")"); } catch (MessagingException ex) { throw new FrontlineException("[ReturnsMailAction.processReturnedMail()] unable to connect to mail server (" + ex.getMessage() + ")"); } catch (Exception ex) { throw new FrontlineException("[ReturnsMailAction.processReturnedMail()] " + ex.getClass().getName() + " : " + ex.getMessage()); } folder = null; totalMsgs = 0; try { folder = store.getDefaultFolder(); if (folder == null) { throw new FrontlineException("[ReturnsMailAction.processReturnedMail()] unable to get default folder"); } folder = store.getFolder(mailFolder); if (folder == null) { throw new FrontlineException("[ReturnsMailAction.processReturnedMail()] unable to get " + mailFolder + " folder"); } // AnalysisIncomingMail analysIncomMail = new AnalysisIncomingMail(context); folder.open(Folder.READ_WRITE); totalMsgs = folder.getMessageCount(); Message message[] = folder.getMessages(); System.err.println("Etape 4 connecté nb de messgae trouvé est " + totalMsgs ); Hashtable AdrAndStatus= null; if (totalMsgs > 0) { for (int i = 0; i < totalMsgs; i++) { Message msg = null; Message msg1 = null; AdrAndStatus= new Hashtable(); try { msg1 = message[i]; msg =msg1; System.err.println("Etape 5 message a traiter est " + msg.getSubject() ); ReturnedMailModelHelper rmmHlpr = ReturnedMailModelHelper.factory(modelbean); if(rmmHlpr.matchingToModel(msg)){ logger.debug("THIS MODELE MATCH TO THIS MAIL :" + msg.getSubject()); break; }else logger.debug("THIS MODELE DOESN'T MATCH TO ANY MAIL !!"); System.err.println("Etape 8 matching fait sur ce modéle sans erreur" ); } catch (Throwable ex) { logger.error("[ReturnsMailAction.processReturnedMail()] " + ex.getClass().getName() + " : " + ex.getMessage()); msg = null; logger.error("STACK TRACE",ex); System.gc(); } finally { msg = null; } } } // si on a des mails non traitès à cause de la taille alors // envoyè le mail à l'administrateur pour avertir(ce traitement n'est pas prevu pour l'instant //fin du traitement } catch (MessagingException ex) { logger.error("[ReturnsMailAction.processReturnedMail()] unable to get default mails (" + ex.getMessage() + ")"); throw new FrontlineException("[ReturnsMailAction.run()] unable to get default mails (" + ex.getMessage() + ")"); } catch (Exception ex) { logger.error("[ReturnsMailAction.processReturnedMail()] " + ex.getClass().getName() + " : " + ex.getMessage()); throw new FrontlineException("[ReturnsMailAction.run()] " + ex.getClass().getName() + " : " + ex.getMessage()); } finally { try { folder.close(true); } catch (Exception ex) { } folder = null; }//fin du finally } catch (Exception ex) { logger.error("[ReturnsMailAction.processReturnedMail()] " + ex.getClass().getName() + " : " + ex.getMessage()); } finally { try { store.close(); } catch (Exception ex) { } store = null; session = null; mailFolder = null; try { logger.error(" Mail traités :"+totalMsgs); } catch (Exception ex) { } }//fin du finally // je match sur le sujet // je match sur le contenu // je match sur le header %>