jwandscheer
jwandscheer

Reputation: 178

Javamail ISO-8859-1 formatting

I made an E- Mail Client for my Android phone with the Javamail Api. If I try to get the sender's mail address and the recipients mail address with the following methods:

Address[] froma = m.getFrom();
        String from = InternetAddress.toString(froma);

        Address[] toa = m.getRecipients(Message.RecipientType.TO);
        String to = InternetAddress.toString(toa);

I get a String like this back:

"Georg =?ISO-8859-1?Q?SP=E4the?= and it has to be Georg Späthe or Georg Spaethe.

I think the Problem is that this are German Mails with another encoding. Can anybody help me to solve that problem?

Upvotes: 4

Views: 2256

Answers (3)

Lothar
Lothar

Reputation: 5449

For what it's worth: You can cast to InternetAddress and use toUnicodeString that will return the decoded mail in the form of "Georg Späthe" <[email protected]> if your input address was "Georg =?ISO-8859-1?Q?SP=E4the?=" <[email protected]>. ALso, as explained by Bill Shannon, you can call getPersonal and getAddress to get the decoded values, so there is no need to fiddle around with MimeUtility yourself.

Upvotes: 0

Bill Shannon
Bill Shannon

Reputation: 29961

Each of the Address objects will be an InternetAddress, cast it to that and use the getAddress or getPersonal method depending on what you want.

Upvotes: 0

stacker
stacker

Reputation: 68942

MIME headers are encoded as per RFC 2047, therefore you need to decode them first.

String decoded = MimeUtility.decodeText("Georg =?ISO-8859-1?Q?SP=E4the?=");

JDK import:

import javax.mail.internet.MimeUtility;

For Android:

import com.android.email.mail.internet;

See also Javadoc of MimeUtility

Upvotes: 9

Related Questions