2017-03-17 4 views
0

Je dois identifier si une pièce jointe est l'image de signature de l'expéditeur et l'ignorer car je veux ignorer ce type de pièces jointes, mais je ne suis pas en mesure d'identifier si cette pièce jointe particulière est l'image de la signature.Java EWS- comment identifier si la pièce jointe est la signature de l'expéditeur image

Ou est-ce qu'un utilisateur peut ajouter une propriété personnalisée tout en ajoutant l'image de signature, afin que je puisse rechercher cette propriété dans le programme?

if (emailMessage.getHasAttachments() || emailMessage.getAttachments().getItems().size() > 0) { 

//get all the attachments 
AttachmentCollection attachmentsCol = emailMessage.getAttachments(); 

log.info("File Count: " + attachmentsCol.getCount()); 

    Attachment attachment = attachmentsCol.getPropertyAtIndex(i); 
    //log.debug("Starting to process attachment "+ attachment.getName()); 

    //do we need to skip this attachment 

     FileAttachment fileAttachment = (FileAttachment) attachment; 
     // if we don't call this, the Content property may be null. 
     fileAttachment.load(); 
     booelan isSignatureImage = fileAttachment.isContactPhoto(); // this is false 
} 

}

Répondre

0

J'ai trouvé un moyen de le faire. Exécutez le code une fois, déterminez un hachage de la pièce jointe que vous souhaitez ignorer, puis créez une chaîne locale de ce hachage. Ensuite, chaque pièce jointe que vous traitez, comparez-la à cette chaîne de hachage locale et si elles correspondent, vous pouvez simplement l'ignorer et passer à la suivante (si vous traitez des pièces jointes dans une boucle comme je le suis).

  // you must first load your attachment to be able to call .getContent() on it 
      fileAttachment.load(); 

      // load content 
      byte[] b = fileAttachment.getContent(); 

      // get the hash of your attachment 
      byte[] hash = MessageDigest.getInstance("MD5").digest(b); 

      // after you run this on the attachment you do not want, take the string from 'actual' below and put it here 
      String expected = "YOUR HASHED STRING"; 

      String actual = DatatypeConverter.printHexBinary(hash); 
      System.out.println(actual); 

      // some conditional to check if your current hash matches expected 
      if(actual.equals(expected)){ 
       continue; 
      }