package modeles; import java.io.ByteArrayInputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.io.Serializable; import java.io.StringWriter; import java.io.UnsupportedEncodingException; import java.nio.charset.UnsupportedCharsetException; import java.util.ArrayList; import java.util.Date; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Scanner; import java.util.Set; import javax.activation.DataSource; import javax.activation.FileDataSource; import javax.mail.MessagingException; import javax.mail.Multipart; import javax.mail.Part; import javax.mail.internet.MimeMultipart; import javax.mail.internet.MimeUtility; import org.apache.commons.io.IOUtils; import org.apache.james.mime4j.MimeException; import org.apache.james.mime4j.stream.EntityState; import org.apache.james.mime4j.stream.MimeTokenStream; import org.jsoup.Jsoup; import com.ibm.icu.text.CharsetDetector; import com.ibm.icu.text.CharsetMatch; import controleurs.operations.liste.ajoutmessages.forum.FormatDate; public class MessageModel implements Serializable { private static final long serialVersionUID = 1L; private int idConversation, idLocuteur; private String numero, fichier, expediteur, mail, profilYahoo, groupPostYahoo, idGoogle, sujet, corps, identifiant, inReplyTo, inReplyToRegroupe, sujetTronque, cTransfertEncoding, cTypeMimeSubtype, cTypeCharset; private Date dateUS; private Set setReferences; private boolean mbx = false; private LocuteurModel locuteur; // Attributs forum private String fSujet; private String fName; private int fNumDansConversation; private int fNbreVuesTopic; private String fRoleLocuteur; private double fStarsLocuteur; // Stats private int fStatNbrePostsLocuteur; private int fStatActivityLocuteur; private String fStatPositionLocuteur; private Date fStatDateRegistreredLocuteur; private String fStatEMailLocuteur; private String fStatWebsiteLocuteur; private String fStatGenderLocuteur; private int fStatAgeLocuteur; private String fStatLocationLocuteur; private String fStatSignatureLocuteur; // Extractify private Object deeperLevel; public MessageModel() { } public int getfStatActivityLocuteur() { return fStatActivityLocuteur; } public LocuteurModel getLocuteur() { return locuteur; } public void setLocuteur(LocuteurModel locuteur) { this.locuteur = locuteur; } public int getIdLocuteur() { return idLocuteur; } public void setIdLocuteur(int idLocuteur) { this.idLocuteur = idLocuteur; } public void setfStatActivityLocuteur(int fStatActivityLocuteur) { this.fStatActivityLocuteur = fStatActivityLocuteur; } public String getfStatPositionLocuteur() { return fStatPositionLocuteur; } public void setfStatPositionLocuteur(String fStatPositionLocuteur) { this.fStatPositionLocuteur = fStatPositionLocuteur; } public String getfStatEMailLocuteur() { return fStatEMailLocuteur; } public void setfStatEMailLocuteur(String fStatEMailLocuteur) { this.fStatEMailLocuteur = fStatEMailLocuteur; } public String getfStatWebsiteLocuteur() { return fStatWebsiteLocuteur; } public void setfStatWebsiteLocuteur(String fStatWebsiteLocuteur) { this.fStatWebsiteLocuteur = fStatWebsiteLocuteur; } public String getfStatGenderLocuteur() { return fStatGenderLocuteur; } public void setfStatGenderLocuteur(String fStatGenderLocuteur) { this.fStatGenderLocuteur = fStatGenderLocuteur; } public int getfStatAgeLocuteur() { return fStatAgeLocuteur; } public void setfStatAgeLocuteur(int ageUser) { this.fStatAgeLocuteur = ageUser; } public String getfStatLocationLocuteur() { return fStatLocationLocuteur; } public void setfStatLocationLocuteur(String fStatLocationLocuteur) { this.fStatLocationLocuteur = fStatLocationLocuteur; } public String getfStatSignatureLocuteur() { return fStatSignatureLocuteur; } public void setfStatSignatureLocuteur(String fStatSignatureLocuteur) { this.fStatSignatureLocuteur = fStatSignatureLocuteur; } public int getfNumDansConversation() { return fNumDansConversation; } public void setfNumDansConversation(int fNumDansConversation) { this.fNumDansConversation = fNumDansConversation; } public int getfNbreVuesTopic() { return fNbreVuesTopic; } public void setfNbreVuesTopic(int fNbreVuesTopic) { this.fNbreVuesTopic = fNbreVuesTopic; } public String getfRoleLocuteur() { return fRoleLocuteur; } public void setfRoleLocuteur(String fRoleLocuteur) { this.fRoleLocuteur = fRoleLocuteur; } public double getfStarsLocuteur() { return fStarsLocuteur; } public void setfStarsLocuteur(double fStarsLocuteur) { this.fStarsLocuteur = fStarsLocuteur; } public int getfStatNbrePostsLocuteur() { return fStatNbrePostsLocuteur; } public void setfStatNbrePostsLocuteur(int fStatNbrePostsLocuteur) { this.fStatNbrePostsLocuteur = fStatNbrePostsLocuteur; } public Date getfStatDateRegistreredLocuteur() { return fStatDateRegistreredLocuteur; } public void setfStatDateRegistreredLocuteur(Date fStatDateRegistreredLocuteur) { this.fStatDateRegistreredLocuteur = fStatDateRegistreredLocuteur; } public void setfStatDateRegistreredLocuteur(String sFStatDateRegistreredLocuteur) { FormatDate fd = new FormatDate(sFStatDateRegistreredLocuteur); Date dDateParseUS = fd.getDateFormatted(); this.fStatDateRegistreredLocuteur = dDateParseUS; } public String getFName() { return fName; } public void setFName(String fName) { this.fName = fName; } public boolean isMbx() { return mbx; } public void setMbx(boolean mbx) { this.mbx = mbx; } public String getcTransfertEncoding() { return cTransfertEncoding; } public void setcTransfertEncoding(String cTransfertEncoding) { this.cTransfertEncoding = cTransfertEncoding; } public String getcTypeMimeSubtype() { return cTypeMimeSubtype; } public void setcTypeMimeSubtype(String cTypeMimeSubtype) { this.cTypeMimeSubtype = cTypeMimeSubtype; } public String getcTypeCharset() { return cTypeCharset; } public void setcTypeCharset(String cTypeCharset) { this.cTypeCharset = cTypeCharset; } public String getSujet() { return sujet; } public void setSujet(String sujet) { this.sujet = sujet; } public Date getDateUS() { return dateUS; } public void setDateUS(Date dateUS) { this.dateUS = dateUS; } public String getNumero() { return numero; } public void setNumero(String numero) { this.numero = numero; } public String getIdentifiant() { return identifiant; } public void setIdentifiant(String identifiant) { this.identifiant = identifiant; } public String getInReplyTo() { return inReplyTo; } public void setInReplyTo(String inReplyTo) { this.inReplyTo = inReplyTo; } public String getInReplyToRegroupe() { return inReplyToRegroupe; } public void setInReplyToRegroupe(String inReplyToRegroupe) { this.inReplyToRegroupe = inReplyToRegroupe; } public String getFichier() { return fichier; } public void setFichier(String fichier) { this.fichier = fichier; } public String getExpediteur() { return expediteur; } public void setExpediteur(String expediteur) { this.expediteur = expediteur; } public String getText() { return corps; } public Object getDeeperLevel() { return deeperLevel; } public void setDeeperLevel(Object deeperLevel) { this.deeperLevel = deeperLevel; } public String getCorps() { System.out.println("MessageModel - getCorps() : getFichier() = " + getFichier()); if (!getFichier().equals("forum")) { // System.out.println("Message : content-transfert-encoding = " // + cTransfertEncoding + " | cTypeMimeSubtype = " // + cTypeMimeSubtype + " | cTypeCharset = " + cTypeCharset); if (cTypeMimeSubtype.indexOf("multipart/") == -1) { try { InputStream source = new FileInputStream(fichier); try { try { MimeTokenStream stream = new MimeTokenStream(); stream.parse(source); for (EntityState state = stream.getState(); state != EntityState.T_END_OF_STREAM; state = stream.next()) { switch (state) { case T_BODY: String mimeType = stream.getBodyDescriptor().getMimeType(); // System.out.println("BODY : mimetype = " // + mimeType + " | charset = " // + charset + " | bodydescriptor = " // + stream.getBodyDescriptor()); if (mimeType.equalsIgnoreCase("text/plain")) { StringWriter writer = null; try { writer = new StringWriter(); IOUtils.copy(MimeUtility.decode(stream.getDecodedInputStream(), "quoted-printable"), writer, "ISO-8859-1"); corps += writer.toString() + "\n"; } catch (NullPointerException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (UnsupportedCharsetException e) { e.printStackTrace(); } catch (MessagingException e) { e.printStackTrace(); } } break; default: break; } } } catch (MimeException e) { e.printStackTrace(); } } finally { source.close(); } } catch (FileNotFoundException e1) { corps = "Fichier non trouvé / File not found : " + getFichier(); } catch (IOException e) { e.printStackTrace(); } } else { MimeMultipart multipart = null; try { InputStream source = new FileInputStream(fichier); try { try { MimeTokenStream stream = new MimeTokenStream(); stream.parse(source); for (EntityState state = stream.getState(); state != EntityState.T_END_OF_STREAM; state = stream.next()) { switch (state) { case T_BODY: DataSource ds = (new FileDataSource(fichier)); multipart = new MimeMultipart(ds); break; default: break; } } } catch (MimeException e) { e.printStackTrace(); } catch (MessagingException e1) { e1.printStackTrace(); } } finally { source.close(); } } catch (FileNotFoundException e1) { corps = "Fichier non trouvé / File not found : " + getFichier(); } catch (IOException e) { e.printStackTrace(); } // TRAITEMENT DES PARTS if (multipart != null) { try { // System.out.println("Nombre de Parts = " // + multipart.getCount()); for (int j = 0; j < multipart.getCount(); j++) { Part partOfMP = multipart.getBodyPart(j); String type = partOfMP.getContentType(); // System.out.println("Content-type = " + type); // if (type.indexOf("text/plain") != -1) { corps += getTextFromMimeMessage(partOfMP); } } catch (MessagingException e) { // TODO Auto-generated catch block e.printStackTrace(); } } else { try { InputStream source = new FileInputStream(fichier); try { try { MimeTokenStream stream = new MimeTokenStream(); stream.parse(source); for (EntityState state = stream.getState(); state != EntityState.T_END_OF_STREAM; state = stream.next()) { switch (state) { case T_START_MULTIPART: Scanner s = new Scanner(stream.getInputStream()).useDelimiter("\\A"); corps = s.hasNext() ? s.next() : ""; break; default: break; } } } catch (MimeException e) { e.printStackTrace(); } } finally { source.close(); } } catch (FileNotFoundException e1) { corps = "Fichier non trouvé / File not found"; } catch (IOException e) { e.printStackTrace(); } } } // System.out.println("longueur de corps = " + corps.length()); corps = getTextSsHTML(corps); } // Conversion en UTF-8 System.out.println("corps size = "+corps.length()); String charset = null; try { InputStream in = new ByteArrayInputStream(corps.getBytes()); CharsetDetector cd = new CharsetDetector(); cd.setText(in); CharsetMatch cm = cd.detect(); charset = cm.getName(); // CharsetMatch matches[]; // matches = cd.detectAll(); // for (int m = 0; m < matches.length; m += 1) { // System.out.println("\ncm.matche=" + m + " name=" // + matches[m].getName() + " confidence=" // + matches[m].getConfidence()); // } } catch (Exception e) { e.printStackTrace(); } // System.out.println("charset icu = " + charset); if (charset.indexOf("_") != -1) charset = charset.substring(0, charset.indexOf("_")); byte[] tab = null; try { tab = corps.getBytes(charset); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { corps = new String(tab, charset); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } return corps; } public String getTextFromMimeMessage(Part p) { System.setProperty("mail.mime.base64.ignoreerrors", "true"); try { if (p.isMimeType("text/*")) { String s = (String) p.getContent(); return s; } if (p.isMimeType("multipart/alternative")) { // prefer html text over plain text Multipart mp = (Multipart) p.getContent(); String text = null; for (int i = 0; i < mp.getCount(); i++) { Part bp = mp.getBodyPart(i); if (bp.isMimeType("text/plain")) { if (text == null) text = getTextFromMimeMessage(bp); continue; } else if (bp.isMimeType("text/html")) { String s = getTextFromMimeMessage(bp); if (s != null) return s; } else { return getTextFromMimeMessage(bp); } } return text; } else if (p.isMimeType("multipart/*")) { Multipart mp = (Multipart) p.getContent(); for (int i = 0; i < mp.getCount(); i++) { String s = getTextFromMimeMessage(mp.getBodyPart(i)); if (s != null) return s; } } } catch (MessagingException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } return null; } // private String getCorpsSsHexa(String corpsMessage) { // Pattern pattern = Pattern.compile("(=[A-Fa-f0-9]{2}|(=(\r\n)))"); // Matcher matcher = pattern.matcher(corpsMessage); // HashMap replacements = new HashMap(); // replacements.put("=\r\n", ""); // replacements.put("=E0", "�"); // replacements.put("=E2", "�"); // replacements.put("=E4", "�"); // replacements.put("=E6", "�"); // replacements.put("=E7", "�"); // replacements.put("=E8", "�"); // replacements.put("=E9", "�"); // replacements.put("=EA", "�"); // replacements.put("=EB", "�"); // replacements.put("=EE", "�"); // replacements.put("=EF", "�"); // replacements.put("=F4", "�"); // replacements.put("=F6", "�"); // replacements.put("=F9", "�"); // replacements.put("=FB", "�"); // // StringBuilder builder = new StringBuilder(); // int i = 0; // while (matcher.find()) { // // System.out.println(matcher.group(1)); // String replacement = replacements.get(matcher.group(1)); // builder.append(corpsMessage.substring(i, matcher.start())); // if (replacement == null) // builder.append(matcher.group(0)); // else // builder.append(replacement); // i = matcher.end(); // } // builder.append(corpsMessage.substring(i, corpsMessage.length())); // String newCorpsMessage = builder.toString(); // return newCorpsMessage; // } public void setCorps(String corps) { this.corps = corps; } public String getMail() { return mail; } public void setMail(String mail) { this.mail = mail; } public String getProfilYahoo() { return profilYahoo; } public void setProfilYahoo(String profilYahoo) { this.profilYahoo = profilYahoo; } public String getGroupPostYahoo() { return groupPostYahoo; } public void setGroupPostYahoo(String groupPostYahoo) { this.groupPostYahoo = groupPostYahoo; } public String getIdGoogle() { return idGoogle; } public void setIdGoogle(String idGoogle) { this.idGoogle = idGoogle; } public String getSujetTronque() { return sujetTronque; } public void setSujetTronque(String sujetTronque) { this.sujetTronque = sujetTronque; } public Set getSetReferences() { return setReferences; } public void setSetReferences(Set setReferences) { this.setReferences = setReferences; } public int getIdConversation() { return idConversation; } public void setIdConversation(int idConversation) { this.idConversation = idConversation; } public String getfSujet() { return fSujet; } public void setfSujet(String fSujet) { this.fSujet = fSujet; } public String getSsOriginalMessage(String newCorpsMessage) { String newCorpsSsOriginalMessage = ""; List listLines = new ArrayList(getCorpsToTab(newCorpsMessage).keySet()); int i = 1; for (String line : listLines) { line = line.replace("\n", ""); // System.out.println("line = " + line); String newLine = ""; if (line.startsWith("|") || line.startsWith("From:") || line.startsWith("From :") || line.startsWith("De :") || line.startsWith("Date:") || line.startsWith("Date :") || line.startsWith("To:") || line.startsWith("To :") || line.startsWith("à:") || line.startsWith("à :") || line.startsWith("Subject:") || line.startsWith("Subject :") || line.startsWith("Objet:") || line.startsWith("Objet :") || line.startsWith("Répondre à :") || line.indexOf("wrote") != -1 || line.indexOf("a écrit") != -1 || line.indexOf("@", 1) != -1) { newLine = "*** " + i + " ***"; i++; } else newLine = line; // System.out.println("newLine = " + newLine); newCorpsSsOriginalMessage += newLine + "\n"; } // System.out.println("MessageModel - getSsOriginalMessage : // newCorpsSsOriginalMessage = \n" // + newCorpsSsOriginalMessage); newCorpsSsOriginalMessage = newCorpsSsOriginalMessage.trim(); if (newCorpsSsOriginalMessage.indexOf("---") != -1) { String[] tab = newCorpsSsOriginalMessage.split("---"); newCorpsSsOriginalMessage = tab[0]; } cleanString(newCorpsSsOriginalMessage); return newCorpsSsOriginalMessage; } public void cleanString(String corpsMessage) { // TABULATIONS corpsMessage = corpsMessage.replaceAll("\t", " "); // ESPACES CONCECUTIFS corpsMessage = corpsMessage.replaceAll("( ){2,}", "\n"); } public Map getCorpsToTab(String s) { Map mapStringStyles = new LinkedHashMap(); String regular = "regular"; String blue = "blue"; String green = "green"; String red = "red"; Scanner scanner = new Scanner(s); while (scanner.hasNextLine()) { String line = scanner.nextLine(); line = line.trim(); if (line.startsWith(">")) { line = line.replaceFirst(">", "|"); if (line.indexOf(">") == 1) line = line.replaceFirst(">", "|"); } line = line.trim(); line += "\n"; if (!mapStringStyles.containsKey(line)) mapStringStyles.put(line, new String()); if (line.startsWith("|")) { if (line.indexOf("|", 1) == 1 || line.indexOf("|", 1) == 2) mapStringStyles.put(line, green); else mapStringStyles.put(line, blue); } else if (line.startsWith("--")) mapStringStyles.put(line, red); else mapStringStyles.put(line, regular); } scanner.close(); return mapStringStyles; } public String getTextSsHTML(String html) { String corpsSsHTML = null; if (html.indexOf("
") != -1 || html.indexOf("
") != -1 || html.indexOf("
") != -1 || html.indexOf("
") != -1) { html = html.replaceAll("(?i)]*>", "br2n"); Jsoup.parse(html); corpsSsHTML = html.replaceAll("br2n", "\n"); } else corpsSsHTML = html; corpsSsHTML = corpsSsHTML.replaceAll("\\<.*?\\>", ""); return corpsSsHTML; } // public void affiche() { // System.out.println("MESSAGE NUMERO " + numero + " : identifiant = " + // identifiant + " | inReplyTo = " + inReplyTo); // } // Part mbp = null; // System.out.println("MULTIPART : "); // // // System.out.println(stream.getInputStream()); // try { // mbp = new MimeBodyPart( // stream.getInputStream()); // // multipart // // .addBodyPart((javax.mail.BodyPart) mbp); // // multipart = (Multipart) // // mbp.getContent(); // // // // System.out.println("Part ContentType = " // // + mbp.getContentType()); // parts.add(mbp); // // if (mbp.isMimeType("text/plain")) // // corpsMessage = // // mbp.getContent().toString(); // } catch (MessagingException e) { // // TODO Auto-generated catch block // e.printStackTrace(); // } // break; // System.out.println("MULTIPART : " // + stream.getBodyDescriptor()); // String typeMime = stream // .getBodyDescriptor() // .getMimeType(); // // String enc = // stream.getBodyDescriptor() // .getTransferEncoding(); // String[] parts = stream // .getInputStream() // .toString() // .split(stream // .getBodyDescriptor() // .getBoundary()); // System.out.println("taille de parts : " // + parts.length); // InputStream decodedStream; // if (MimeUtil.ENC_BASE64.equals(enc)) // { // decodedStream = new // Base64InputStream( // stream.getInputStream()); // } else if // (MimeUtil.ENC_QUOTED_PRINTABLE // .equals(enc)) { // decodedStream = new // QuotedPrintableInputStream( // stream.getInputStream()); // } else { // decodedStream = stream // .getInputStream(); // } // // mbp = null; // for (String s : parts) { // if (s.indexOf("Content-Type: text/") // != -1) { // try { // mbp = new MimeBodyPart( // decodedStream); // // corpsMessage += // // getTextFromMimeMessage(mbp)+ // // "\n"; // } catch (MessagingException e) { // // TODO Auto-generated catch block // e.printStackTrace(); // } // } // } // corpsMessage = // getTextFromMimeMessage(mbp); // System.out.println("typeMime = "+typeMime+" | ENCODAGE = " // + enc); // Scanner s = new // Scanner(stream.getInputStream()).useDelimiter("\\A"); // corpsMessage = s.hasNext() ? s.next() // : ""; // InputStream decodedStream = null; // try { // decodedStream = MimeUtility.decode( // stream.getInputStream(), // enc); // } catch (MessagingException e) { // // TODO Auto-generated catch block // e.printStackTrace(); // } // if (MimeUtil.ENC_BASE64.equals(enc)) // { // decodedStream = new // Base64InputStream( // stream.getDecodedInputStream()); // } else if // (MimeUtil.ENC_QUOTED_PRINTABLE // .equals(enc)) { // decodedStream = new // QuotedPrintableInputStream( // stream.getDecodedInputStream()); // } else { // decodedStream = stream // .getDecodedInputStream(); // } // if (!decodedStream.equals(null)) { // String[] parts = decodedStream // .toString() // .split(stream // .getBodyDescriptor() // .getBoundary()); // System.out // .println("taille de parts : " // + parts.length); // for (String s : parts) { // if (s.indexOf("Content-Type: text/") // != -1) { // System.out // .println("Content-Type: text/"); // corpsMessage += s + "\n"; // } // } // } // // System.out.println("MULTIPART : " // + decodedStream); // if (typeMime.indexOf("text/") != -1) // { // try { // corpsMessage = // getTextFromMimeMessage(new // MimeMessage( // null, // stream.getDecodedInputStream())); // } catch (MessagingException e) { // e.printStackTrace(); // } // } // // StringBuffer sb = new // StringBuffer(); // BufferedReader br = new // BufferedReader( // new InputStreamReader( // stream.getInputStream())); // String line = null; // while ((line = br.readLine()) != // null) { // sb.append(new String( // DecoderUtil // .decodeEncodedWords(line, // DecodeMonitor.STRICT))+"\n"); // } // corpsMessage = sb.toString(); // } else { // } // System.out // .println("Body detected, contents = " // + stream.getInputStream() // + ", header data = " // + stream.getBodyDescriptor()); // Scanner s = new // Scanner(stream.getInputStream()).useDelimiter("\\A"); // corpsMessage = s.hasNext() ? s.next() // : ""; // corpsMessage = // MimeUtility.decodeText(corpsMessage); // StringWriter writer = new // StringWriter(); // IOUtils.copy(stream.getInputStream(), // writer); // corpsMessage = writer.toString(); // corpsMessage = // MimeUtility.decodeText(corpsMessage); // StringBuilder sb = new // StringBuilder(); // try { // Reader r = stream.getReader(); // int c; // while ((c = r.read()) != -1) { // sb.append((char) c); // } // } catch (IOException ex) { // ex.printStackTrace(); // } // corpsMessage = sb.toString(); // Corps Message // try { // corpsMessage = // break; // case T_BODY: // System.out.println("BODY : " // + stream.getBodyDescriptor() // .getMimeType()); // String typeMime = stream // .getBodyDescriptor() // .getMimeType(); // if (typeMime.indexOf("text/") != -1) // { // try { // corpsMessage = // getTextFromMimeMessage(new // MimeMessage( // null, // stream.getDecodedInputStream())); // } catch (MessagingException e) { // e.printStackTrace(); // } // } // NETTOYAGE // // A ECRIT // String newCorps1 = ""; // if (corps.indexOf("a écrit") != -1) { // String[] tabCorps1 = corps.split("a écrit"); // // Première partie // String[] p1 = tabCorps1[0].split("\n"); // for (int i = 0; i < p1.length - 1; i++) { // newCorps1 += p1[i]; // } // // String newCorps2 = ""; // String[] corps2 = tabCorps1[1].split("\n"); // for (String sCorps2 : corps2) { // newCorps2 += "## " + sCorps2 + "\n"; // } // newCorps1 += "\n" + newCorps2; // } else // newCorps1 = corps; // newCorps1 = corps; // // LIGNES COMMENCANT PAR > // String[] tabCorps1 = corps.split("\n"); // String newCorps1 = ""; // for (String ligne : tabCorps1) { // ligne = ligne.trim(); // String newLigne; // if (ligne.length() != 0) { // if (ligne.indexOf(">") == 0 // // || ligne.indexOf("De :") == 0 // // || ligne.indexOf("From :") == 0 // // || ligne.indexOf("Date :") == 0 // // || ligne.indexOf("Envoyé :") == 0 // // || ligne.indexOf("Sent :") == 0 // // || ligne.indexOf("À :") == 0 // // || ligne.indexOf("To :") == 0 // // || ligne.indexOf("Objet :") == 0 // // || ligne.indexOf("Object :") == 0 // // || ligne.indexOf("Subject :") == 0 // // || ligne.indexOf("De:") == 0 // // || ligne.indexOf("From:") == 0 // // || ligne.indexOf("Date:") == 0 // // || ligne.indexOf("Envoyé:") == 0 // // || ligne.indexOf("Sent:") == 0 // // || ligne.indexOf("À:") == 0 // // || ligne.indexOf("To:") == 0 // // || ligne.indexOf("Objet:") == 0 // // || ligne.indexOf("Object:") == 0 // // || ligne.indexOf("Subject:") == 0 // ) // newLigne = "## " + ligne; // else // newLigne = ligne; // newCorps1 += newLigne + "\n"; // } // } }