Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Почта через SmtpClient с русским контетном


Автор: Vector255 17.4.2015, 10:19
Доброе время суток всем ! Проблема такова: 
при отправке почты (внутренний сервер MS Exchange 2010) не корректно отображаются русские буквы в приходящем сообщении. Как научить систему общаться на русском ? Отправка происходит из сервлета, на движке Apache Tomcat 7, код таков :
     SmtpClient smtp = new SmtpClient("192.168.0.70");  // mail server
     smtp.from("*******");
     smtp.to("********");
     PrintStream msg = smtp.startMessage();

     msg.println("To: " + fio);  
     msg.println("Subject: ААББВВ");

     msg.println("Сообщение на русском языке "  );

     smtp.closeServer();

Автор: LSD 17.4.2015, 11:48
Для начала, было бы неплохо указать какую библиотеку ты используешь.

Автор: Vector255 17.4.2015, 11:55
что имеется в виду - библиотек дополнительных нет, чистый html, JavaScript, jsp - страницы, сервлеты на Java.

Автор: sQu1rr 17.4.2015, 12:30
sun.net.smtp.SmtpClient - а вы что думали? smile

Автор: Vector255 17.4.2015, 13:03
Это само собой разумеющаяся вещь. Без импорта этих библиотек вообще ничего не компилируется, не говоря уже про работу. Использую IntelliJ IDEA, там без импорта нужных библиотек код помечается красным. 

Автор: cube 17.4.2015, 14:34
копайте в сторону encoding, может следует UTF-8 или windows-1251 установить

Автор: Vector255 17.4.2015, 16:12
Да, что - то подобное про encoding я предполагаю, заготовил даже static final String ENCODING = "koi8-r"; но пока не нашёл куда бы его вставить, ничего подходящего в свойствах не нашёл пока ...

Автор: cube 17.4.2015, 16:46
ну наверно текст который вы написали в idea в UTF-8 (проект в какой кодировке) сообщения приходят в UTF-8? поэтому краказябли, что будет если вы укажите в письме явно

Код

msg.println("Content-type: text/plain; charset=UTF-8");

Автор: Vector255 17.4.2015, 16:54
Результат тот же, дополнительно ещё и "Content-type: ... " вошло в сообщение

Автор: LSD 17.4.2015, 18:53
Цитата(sQu1rr @  17.4.2015,  13:30 Найти цитируемый пост)
sun.net.smtp.SmtpClient - а вы что думали?

Есть еще http://commons.apache.org/proper/commons-net/apidocs/org/apache/commons/net/smtp/SMTPClient.html.

По сабжу, выкинь этот sun.net и больше никогда не используй. И возьми стандартный http://www.oracle.com/technetwork/java/javamail/index.html. И там уже есть [url=https://docs.oracle.com/javaee/6/api/javax/mail/internet/MimeBodyPart.html#setText(java.lang.String, java.lang.String)]MimeBodyPart.setText()[/url] принимающий текст и кодировку.

Автор: Vector255 18.4.2015, 08:32
Спасибо, попробую прикрутить эту штуку.

Автор: Vector255 18.4.2015, 11:35
На этот раз всё вылетает на 
Код

MimeMessage msg = new MimeMessage(session);

В консоли имею это - 
18.04.2015 8:33:07 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet Faces Servlet threw exception
java.lang.NoClassDefFoundError: javax/activation/DataHandler

по - разному создавал session, но всегда одно и то же :-( 

Автор: cube 19.4.2015, 19:06
Цитата(Vector255 @  18.4.2015,  11:35 Найти цитируемый пост)
.NoClassDefFoundError


Слушайте, а почему бы вам не попробовать на простом приложении запустить, консольном, простой 1 класс написать, на нем все испытать...

Библиотеку в WEB-INF/lib положили?

Автор: LSD 20.4.2015, 12:49
Цитата(Vector255 @  18.4.2015,  12:35 Найти цитируемый пост)
java.lang.NoClassDefFoundError: javax/activation/DataHandler

Этот класс входит в состав JDK начиная с 1.6. Ты на какой версии запускаешь?

Автор: Vector255 22.4.2015, 08:19
Итак, опять на работе
Цитата

Этот класс входит в состав JDK начиная с 1.6

Да, у меня 1.5... Это старый и долгий проект. Буду разбираться.

Автор: LSD 22.4.2015, 12:29
Цитата(Vector255 @  22.4.2015,  09:19 Найти цитируемый пост)
у меня 1.5...

Подключи к проекту http://www.oracle.com/technetwork/java/javase/index-jsp-136939.html.

Автор: Vector255 22.4.2015, 13:38
Перешёл на 1.6. Дело немного сдвинулось, однако теперь в Transport.send(Message); имею   "javax.mail.AuthenticationFailedException: No authentication mechanisms supported by both server and client" 

Автор: Vector255 22.4.2015, 15:03
Заработало. Без авторизации. Письма приходят на русском. Всем спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)