MessageModel.java
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<String> 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<String, String> replacements = new HashMap<String, String>();
// 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<String> getSetReferences() {
return setReferences;
}
public void setSetReferences(Set<String> 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<String> listLines = new ArrayList<String>(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<String, String> getCorpsToTab(String s) {
Map<String, String> mapStringStyles = new LinkedHashMap<String, String>();
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("<br>") != -1 || html.indexOf("<div>") != -1 || html.indexOf("<BR>") != -1
|| html.indexOf("<DIV>") != -1) {
html = html.replaceAll("(?i)<br[^>]*>", "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";
// }
// }
}