Арабский и JavaMail Проблема - PullRequest
2 голосов
/ 20 марта 2012

Я столкнулся с проблемой в одном из моих приложений Struts. У меня есть страница JSP, которая принимает входные данные от пользователя и отправляет на адрес электронной почты. Я установил кодировку на странице JSP следующим образом.

<%@ page  pageEncoding="UTF-8"  contentType="text/html; charset=UTF-8" language="java"%>

Теперь, когда пользователь отправляет форму в действие, я использую приведенный ниже код для отправки электронной почты получателю.

Properties properties = new Properties();
    properties.put("mail.smtp.host", "10.51.10.44");
    properties.put("mail.smtp.port", "25");
    properties.setProperty("charset","utf-8");
    Session session = Session.getDefaultInstance(properties, null);
    try  {

            MimeMessage message = new MimeMessage(session);
            String msg = formatEmail(userForm.getContent(),userForm.getUsername(),ip,host);
            message.setFrom(new InternetAddress(from));
            message.setRecipient(Message.RecipientType.TO, new InternetAddress(to));
            message.setSubject(subject,  "UTF-8");
            BodyPart messageBodyPart = new MimeBodyPart(); 
            messageBodyPart.setHeader("Content-Type","text/plain; charset=UTF-8"); 
            System.out.println("subject :-"+subject);
            System.out.println("MESSAGE :-"+msg);
            messageBodyPart.setContent(msg.toString(), "text/html;charset=UTF-8");
            Multipart multipart = new MimeMultipart();
            multipart.addBodyPart( messageBodyPart ); 
            message.setContent( multipart); 
            Transport.send(message);

Но мой получатель получает содержимое и тему арабского сообщения в виде нежелательной почты следующим образом.

سيسيششسيؕكنشسيكتسيشماسيشنلاسيشتلشسيتلشسيجشسيلجسشتنسي

Пожалуйста, помогите ... Я знаю, что это проблема кодирования. Я получаю успех, если я изменяю кодировку JSP на

<%@ page  pageEncoding="UTF-8"  contentType="text/html; charset=iso-8859-1" language="java"%>

Но при этом весь остальной текст, который повторяется из БД и отображается на страницах JSP, идет как знак вопроса.

1 Ответ

3 голосов
/ 20 марта 2012

также установите содержимое.

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