1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
|
public class MessageAnalyzer {
private BodyPart[] tableau;
private int index;
private String texte="";
public static MessageAnalyzer analyze(Message msg){
MessageAnalyzer retour = new MessageAnalyzer();
try {
StringTokenizer tempo = new StringTokenizer(msg.getContentType(),"/");
String contenu=tempo.nextToken();
if ("text".equals(contenu))// si le contenu du mail est du texte simple
{
retour.texte = (String)msg.getContent();
retour.index=0;
}
else if ("multipart".equals(contenu))//si message multipart
{
Multipart messageMultipart = (Multipart)msg.getContent();
retour.tableau = new BodyPart[messageMultipart.getCount()];
for(int j=0;j<messageMultipart.getCount();j++)
{
retour.tableau[j] = messageMultipart.getBodyPart(j);
System.out.println("valeur du contenu du BodyPart : "+retour.tableau[j].getContentType());
System.out.println("valeur de la classe de msg :"+msg.getContentType());
System.out.println("texte : valeur de contenu : "+contenu);
System.out.println("multipart : valeur du contenu du BodyPart : "+retour.tableau[j].getContentType());
if("text/plain".equals(retour.tableau[j].getContentType()))// si c'est un text
{
retour.index = j;
}
else if("text/hmtl".equals(retour.tableau[j].getContentType()))// si c'est un text
{
retour.index = j;
}
else retour.index=-1;//sinon je met l'index a -1
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}catch (Exception e){
System.out.println("erreur inconnue : ");
e.printStackTrace();
}
return retour;
}
private MessageAnalyzer(){
}
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
public BodyPart[] getTableau() {
return this.tableau;
}
private static String decodeText(final String text) throws UnsupportedEncodingException {
return null == text ? text : new String(text.getBytes("iso-8859-1"));
}
public String getTextAt(int i){ //utilisé pour recuperer le texte à situé a index
String back = null;
if(!"".equals(this.texte)&&i==0) return texte;//si le String texte n'est pas vide et si l'index est a 0
try
{
back = (String) this.tableau[i].getContent();
return back;//je recupere le contenu du texte
}catch(UnsupportedEncodingException e)//en cas d'exception
{
try
{
back= MessageAnalyzer.decodeText((String) this.tableau[i].getContent());//j'essaie de decoder le texte
} catch (UnsupportedEncodingException e1) {//et je retombe sur cette erreur pour les autres types de charset
System.out.println("défaut de codage du texte");
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (MessagingException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch(Exception e){
System.out.println("impossible de récuperer le texte @ : "+i);
e.printStackTrace();
}
return "impossible de récuperer le texte @ : "+i;
} |
Partager