I have written a code to parse .eml file to a JSON file. I'm using the below dependency
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>jakarta.mail</artifactId>
<version>2.0.1</version>
</dependency>
Here is my code
/**
* Convert .eml file to .json file
*
* @param inputFile .eml file
* @param outputFile .json file
* @return output file
* @throws Exception Exception
*/
public File executeTransform(File inputFile, File outputFile) throws Exception {
try {
Properties properties = new Properties();
Session session = Session.getDefaultInstance(properties);
// Read the .eml file
InputStream emlInputStream = new FileInputStream(inputFile);
MimeMessage emlMessage = new MimeMessage(session, emlInputStream);
// Convert the email message to JSON. convertEmlToJson() This function reads eml, extracts required data from it, puts that data in ObjectNode, and returns that ObjectNode.
ObjectNode jsonNode = convertEmlToJson(emlMessage);
// Write JSON to a file
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.enable(SerializationFeature.INDENT_OUTPUT);
objectMapper.writeValue(outputFile, jsonNode);
} catch (Exception e) {
System.err.println("Test log : error occurred " + e.getMessage());
throw e;
}
return outputFile;
}
While running this code I'm getting below error
java.lang.reflect.InvocationTargetException and cause java.lang.NoSuchMethodError: 'void com.sun.mail.util.LineInputStream.<init>(java.io.InputStream, boolean)'
And getting above error for this line
MimeMessage emlMessage = new MimeMessage(session, emlInputStream);
Does anyone know what I need to do to resolve this issue?
I resolved this issue by adding the below dependency instead
jakarta.mailI'm using JAVA11. And before Java 17
jakarta.mailwasjavax.mail.If you want to use
jakarta.mail, you have to upgrade to Java17, which hasjakarta.mailAPI built-in, orjavax.mailwill work with Java11 or less.