Quantcast
Channel: Active questions tagged email - Stack Overflow
Viewing all articles
Browse latest Browse all 29755

Encoding issue while reading the content of an email with JavaMail

$
0
0

I'm reading the messages from an email account by using JavaMail 1.4.1 (I've upgraded to 1.4.5 version but with the same problem), but I'm having issues with the encoding of the content:

POP3Message pop3message;
... 
Object contentObject = pop3message.getContent();
...   
String contentType = pop3message.getContentType();
String content = contentObject.toString();

Some messages are read properly, but others have strange characters because of a not suitable encoding. I have realized it doesn't work for a specific content type.

It works well if the contentType is any of these:

  • text/plain; charset=ISO-8859-1

  • text/plain;
    charset="iso-8859-1"

  • text/plain;
    charset="ISO-8859-1";
    format="flowed"

  • text/plain; charset=windows-1252

but it doesn't if it is:

  • text/plain;
    charset="utf-8"

for this contentType (UTF-8 one) if I try to get the encoding (pop3message.getEncoding()) I get

quoted-printable

For the latter encoding I get for example in the debugger in the String value (in the same way as I see it in the database after persisting the object):

Ubicación (instead of Ubicación)

But if I open the email with the email client in a browser it can be read without any problem, and it's a normal message (no attachments, just text), so the message seems to be OK.

Any idea about how to solve this issue?

Thanks.


UPDATE This is the piece of code I've added to try the function getUTF8Content() given by jlordo

POP3Message pop3message = (POP3Message) message;
String uid = pop3folder.getUID(message);

//START JUST FOR TESTING PURPOSES
if(uid.trim().equals("1401")){
    Object utfContent = pop3message.getContent();
    System.out.println(utfContent.getClass().getName()); // it is of type String
    //System.out.println(utfContent); // if not commmented it prints the content of one of the emails I'm having problems with.
    System.out.println(pop3message.getEncoding()); //prints: quoted-printable
    System.out.println(pop3message.getContentType()); //prints: text/plain; charset="utf-8"
    String utfContentString = getUTF8Content(utfContent); // throws java.lang.ClassCastException: java.lang.String cannot be cast to javax.mail.util.SharedByteArrayInputStream
    System.out.println(utfContentString);
}

//END TEST CODE

Viewing all articles
Browse latest Browse all 29755

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>