Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Java mail encoding non english characters

Using the code below i can send an email written in non-english and although the subject appears correctly the body appears as gibberish.
Any ideas?
Thank you

public void postMail(String recipient, String subject, String message, String from) throws MessagingException, UnsupportedEncodingException {

            //Set the host smtp address
            Properties props = new Properties();
            props.put("mail.smtp.host", "mail.infodim.gr");

            // create some properties and get the default Session
            Session session = Session.getDefaultInstance(props, null);

            // create a message
            Message msg = new MimeMessage(session);

            // set the from and to address
            InternetAddress addressFrom = new InternetAddress(from);
            msg.setFrom(addressFrom);

            InternetAddress addressTo=new InternetAddress(recipient);
            msg.setRecipient(Message.RecipientType.TO, addressTo);

            // Setting the Subject and Content Type
            msg.setSubject(subject);

            msg.setContent(message, "text/plain");
            Transport.send(msg);

        }
like image 786
Argiropoulos Stavros Avatar asked Mar 30 '10 07:03

Argiropoulos Stavros


2 Answers

Try:

msg.setContent(message, "text/plain; charset=UTF-8");

Edit Changed to text/plain.

like image 92
Rob Heiser Avatar answered Oct 22 '22 12:10

Rob Heiser


Instead of

msg.setContent(message, "text/plain");

I would write

Multipart mp = new MimeMultipart();
MimeBodyPart mbp = new MimeBodyPart();
mbp.setContent(message, "text/plain; charset=ISO-8859-7");
mp.addBodyPart(mbp);

msg.setContent(mp);

I guessed ISO-8859-7 from your name because this charset is for Greek, but maybe you can choose it more properly. Or maybe also UTF-8 works for your case.

like image 24
bluish Avatar answered Oct 22 '22 13:10

bluish