powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / JavaMail
34 сообщений из 34, показаны все 2 страниц
JavaMail
    #38499274
Fyn2013
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кто сталкивался с проблемой кодировки русских букв при отправки письма из формы jsp и сервлета, используя JavaMail?? какую магию применить? при отсылке, на почту приходят или "?????" или непонятные символы.
...
Рейтинг: 0 / 0
JavaMail
    #38499394
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй отправить письмо содержащее два алвафита.
Код: java
1.
2.
ABCD....Zabcd....z
АБВГД....ЭЮЯ....эюя


И покажи что вернулось.
...
Рейтинг: 0 / 0
JavaMail
    #38499482
WGA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WGA
Гость
Fyn2013,

Код покажите, пжл.
...
Рейтинг: 0 / 0
JavaMail
    #38499536
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MimeMessage message = new MimeMessage(session);
message.setSubject(subject, "UTF-8");
message.setHeader("Content-Type", "text/plain; charset=UTF-8");
...
Рейтинг: 0 / 0
JavaMail
    #38499562
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да перед отправкой надо есче убедится что строки взятые из request form в правильной кодировке
...
Рейтинг: 0 / 0
JavaMail
    #38499892
GKS_Samara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в спринге аналогичная проблема полечилась добавлением
<property name="defaultEncoding" value="UTF-8" />

в spring-servlet.xml

<bean id="mailSender"
class="org.springframework.mail.javamail.JavaMailSenderImpl">

<property name="host" value="..." />

<property name="port" value="25" />

<property name="defaultEncoding" value="UTF-8" />

</bean>

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
JavaMail
    #38499969
Fyn2013
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

когда отправляю латинские буквы, всё ок. А когда вписываю на русском имя, тему и текст, то только на почте тема письма иероглифами видна, а всё остальное русские буквы передаёт. Вот фрагмент из кода

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
public void sendMessage() throws Exception{
		// Get system properties
		Properties props = System.getProperties();
		
	   // mail server connection parameters
		props.put("mail.smtp.host", smtpHost);
		props.put("mail.smtp.port", 587);//gmail's smtp port
		props.put("mail.smtp.auth", "true");
		props.put("mail.smtp.starttls.enable", "true");

		// Get session		
		javax.mail.Session session = javax.mail.Session.getDefaultInstance(props);
		
		// creates a new e-mail message
		MimeMessage message = new MimeMessage(session);

		javax.mail.internet.InternetAddress[] iadresses = null;
		
		// create the message part 
		MimeBodyPart messageBodyPart = new MimeBodyPart();
	
		messageBodyPart.setContent(content,"text/html");

        
		try{
			if(to != null){
				iadresses = javax.mail.internet.InternetAddress.parse(to, false);
				message.setRecipients(javax.mail.Message.RecipientType.TO, iadresses);
			}else{
				throw new javax.mail.MessagingException("The mail message requires a 'TO' adress!");
			}
			if(from != null){
				message.setFrom(new javax.mail.internet.InternetAddress(from));
			}else{
				throw new javax.mail.MessagingException("The mail message requires a 'FROM' adress!");
			}
			if(subject != null){
				
				message.setSubject(subject,"UTF-8");
			}
javax.mail.Transport tr = session.getTransport("smtp");
			//parameters to connect gmail
			tr.connect(smtpHost, "********", "******");
			message.saveChanges();
			// sends the e-mail
			tr.sendMessage(message, message.getAllRecipients());
			tr.close();
			
		}catch(Exception e){
			throw e;
		}
	}
...
Рейтинг: 0 / 0
JavaMail
    #38499971
Fyn2013
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GKS_Samara,

но у меня это не спринговский проект
...
Рейтинг: 0 / 0
JavaMail
    #38499980
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fyn2013,

Ну, написали же выше уже.
15286238
Сравните с вашим кодом и сделайте выводы.
...
Рейтинг: 0 / 0
JavaMail
    #38500021
WGA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WGA
Гость
Fyn2013,

замените в
Код: java
1.
messageBodyPart.setContent(content,"text/html");

на вызов
Код: java
1.
public void setText(String text, String charset, String subtype)  throws MessagingException
...
Рейтинг: 0 / 0
JavaMail
    #38500036
Fyn2013
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не помогает(
...
Рейтинг: 0 / 0
JavaMail
    #38500144
Fyn2013
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lleming,
llemingда перед отправкой надо есче убедится что строки взятые из request form в правильной кодировке
а что значит убедиться вы написали?
...
Рейтинг: 0 / 0
JavaMail
    #38500153
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fyn2013а что значит убедиться вы написали?
Остановить в режиме отладки и посмотреть, что строки содержат валидные данные и проблема именно в JavaMail, а не где-то ещё.
...
Рейтинг: 0 / 0
JavaMail
    #38500177
Fyn2013
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

опишите как это сделать или ссылку киньте плиз
...
Рейтинг: 0 / 0
JavaMail
    #38500195
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
JavaMail
    #38500537
Fyn2013
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lleming,

борьба с кодировкой продолжается..смотрите что происходит:
у меня есть по умолчанию в пропертях русские данные о теме и сообщении письма, и те, что ввожу в форму..так вот если по умолчанию отсылаю, то отображаются русские буквы в теме, а в сообщении нет(????), а если через форму ввожу русские буквы - то наоборот, на почте проверяю - сообщение видно на русском, а теме вопросиками..что делать? сам проект в свойвствах UTF-8 стоит. И вот из кода кое-что:

Код: java
1.
2.
3.
		messageBodyPart.setHeader("Content-Type","text/plain; charset=utf-8"); 
		messageBodyPart.setContent(content,"text/plain");
                message.setSubject(subject);  // message.setSubject(subject,"UTF-8"); или message.setSubject(subject, "text/plain"); -не работает
...
Рейтинг: 0 / 0
JavaMail
    #38500550
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fyn2013,
Т.е. пошаговой отладкой ещё предстаит научиться пользоваться?
...
Рейтинг: 0 / 0
JavaMail
    #38500551
Fyn2013
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

я посмотрел видео, что вы дали..там лёгкие примеры..но я не пойму как её использовать в моём случае чтобы подобрать нужную кодировку, которая передасть не "абрукадабру" на мою почту
...
Рейтинг: 0 / 0
JavaMail
    #38500574
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
прежде чем слать сообщение надо убедиться что томкат не перекодировал строки из важей формы в jsp неправильно

вариантов несколько как это сделать

одни из них поставить дебагинг и точку оствановки сразу после того как получите тему и тело сообщения из jsp в сервлете( или где там у вас обработчик)
в момент остановки посмотреть локальные переменые тема и тело сообщения, читаются они или там тоже крякозябры

если форма отдает в запросе POST То

request.setCharacterEncoding('UTF-8')

помогает правильно раскодировать (при условии что Jsp отдается в UTF-8), если в get то там скорее всего Tomcat подпортит строку и ее надо будет декодирjвать

лично я стразу в эклипсу ставлю utf-8 для всех проектов по умплочанию а также прописываю в pom чтобы легче было искать где что пошло не так,
так сказать точка опоры кодировка utf-8

по факту на stackoverflow жаловались что subject в почтовых сообщениях не кодируется правильно но уменя сразу без проблем заработало
...
Рейтинг: 0 / 0
JavaMail
    #38500575
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот это вот часть фразы меня напрягает

"у меня в пропертях" это значит что тема и тело сообщения в файле properties?

если да то там проблемка метод Load использует кодировку по умолчанию


public void load(InputStream inStream)
throws IOException
Reads a property list (key and element pairs) from the input byte stream. The input stream is in a simple line-oriented format as specified in load(Reader) and is assumed to use the ISO 8859-1 character encoding; that is each byte is one Latin1 character. Characters not in Latin1, and certain special characters, are represented in keys and elements using Unicode escapes as defined in section 3.3 of The Java™ Language Specification.

а шлем в utf?
...
Рейтинг: 0 / 0
JavaMail
    #38500587
Fyn2013
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lleming,

что такое шлем?
в .properties у меня дефолтное название темы и контент, и если я ничё не ввожу в форму, а просто жму "отправить", то на почте тема приходит нормально на русском, а контент(текст) отображается вопросиками("????")..а если ввиду в форму тему и контент, то наоборот вижу когда проверяю почту свою - контент вопросами, а тема не отображается)
и я сделал дебаг, он показал сразу иероглифы, там где соответственно
...
Рейтинг: 0 / 0
JavaMail
    #38500597
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fyn2013что такое шлем?

Ну, можно шапочку из фольги.
...
Рейтинг: 0 / 0
JavaMail
    #38500599
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы шлем мэкл пользуясь данными как из Properties файла так и со странички. Где несовпадают кодирвки так что неудивительно что вылазиют крякозябры

вот так вот загрузить Properties в UTF-8

Код: java
1.
2.
3.
4.
		Properties props = new Properties();
		File file = new File("mail.properties");
		InputStreamReader reader = new InputStreamReader(new FileInputStream(file), StandardCharsets.UTF_8);
		props.load(reader);




а вот так страничку jsp в UTf-8 отобразить
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="ISO-8859-1"%>
и затем
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
.....
</head>

Tomcat по умолчанию как я уже говорил декодирует в ISO-8859-1 поэтому либо пишем фильтр который все запросы перехватывает и
выполняет
Код: java
1.
request.setCharacterEncoding("UF-8");



либо настараиваем томкат хитрым образом (гуглить как)
это при условии что форма get


опять таки если форма отсылает в get то request.setCharacterEncoding не поможет так как параметры идут в адресной строке а ее томкат по умолчанию берет как в ISO-8859_1

там уже надо перекодировать параметр
т.е. данные пришли кодированными в utf-8, томкат байты перевел в символы как iso-8859-1
String mailBody = request.getParameter("mailbody");
String nValue = new String(mailBody.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);
...
Рейтинг: 0 / 0
JavaMail
    #38500600
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чет совсем криво пишу
...
Рейтинг: 0 / 0
JavaMail
    #38500667
WGA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WGA
Гость
llemingчет совсем криво пишуДа... и по орфографии, и по смыслу... ) По-моему вы бисер мечете... Надо просто убедится, что кодировка не полетела до отправки через JavaMail. Это либо через отладку, либо через логгирование.
...
Рейтинг: 0 / 0
JavaMail
    #38500670
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WGAllemingчет совсем криво пишуДа... и по орфографии, и по смыслу... ) По-моему вы бисер мечете... Надо просто убедится, что кодировка не полетела до отправки через JavaMail. Это либо через отладку, либо через логгирование.

не совсем мечу

чувак просто оправляет мэйл двумя способами
1. берет данные из jsp формы
2. берет данные из Properties файла

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

я его к мысли и подвожу что следует подогнать все к одной кодировке либо перекодировать данные при поступлении.
...
Рейтинг: 0 / 0
JavaMail
    #38500812
Fyn2013
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lleming,

llemingтам уже надо перекодировать параметр
т.е. данные пришли кодированными в utf-8, томкат байты перевел в символы как iso-8859-1
String mailBody = request.getParameter("mailbody");
String nValue = new String(mailBody.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);

когда делаю таким образом, то после импорта библиотеки import sun.nio.cs.StandardCharsets, эклипс подчёркивает как ошибку ISO_8859_1 и UTF_8

форма у меня методом post.. когда я в jsp ставлю энкодинг utf-8, тогда вообще всё на почту приходит кракозябрами, а если кбираю с jsp все энкодинги вместе с метой, тогда на почту нормально хоть тема хоть сообщение письма отображается на русском
...
Рейтинг: 0 / 0
JavaMail
    #38500848
Fyn2013
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WGA,

Добился того, что при отсылке почты, дефолтные(которые в mybundle.properties) тема и контент, присылаются на почту в русском виде, и в коде такая штука ещё прописана
java.io.PrintWriter out = response.getWriter();
out.println("Hello " + request.getParameter("UserName") + ", your message have sent!!");
так вот, после отсылке почты, когда ввёл имя с формы тоже русскими отобразилось оно - Hello, Александр, your message have sent!!

а вот если ввожу в форму тема или контент, то они приходят на почту в таком виде - ãíåíã

а если ставлю такое в jsp - <%@ page contentType="text/html;charset=UTF-8"%>, тогда и имя, введёное из формы отображается ãíåíã
...
Рейтинг: 0 / 0
JavaMail
    #38500957
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fyn2013,

очень сложно понять что и как у вас происходит. По факту где то строка у неправильно перекодируется и нужно найти где.
У вас два источника данных
1. веб форма
2. файл properties

нужно опредлиться в какой кодировке файл пропертиес и в какой кодировке браузер отправляет симовлы из формы.

самый простой способ как уже было сказано это дебагиинг
ставите точку оставноки после того как извлекли данные из запроса и смотрите соостояние переменных читаемые ли присланные данные или нет

ставите точку остановки после того как загрузили файл пропертиес и смотрите читаемые ли данные



Код: java
1.
2.
3.
ava.io.PrintWriter out = response.getWriter();
out.println("Hello " + request.getParameter("UserName") + ", your message have sent!!");
так вот, после отсылке почты, когда ввёл имя с формы тоже русскими отобразилось оно - Hello, Александр, your message have sent!!



здесь может быть несколько вариантов почему так происходит и угадать в каком из них ваш случай без кода не получится
...
Рейтинг: 0 / 0
JavaMail
    #38500995
Fyn2013
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lleming,

ну так я и сделал дебаг

llemingставите точку оставноки после того как извлекли данные из запроса и смотрите соостояние переменных читаемые ли присланные данные или нет

здесь нечитаемые subject и content

llemingставите точку остановки после того как загрузили файл пропертиес и смотрите читаемые ли данные

а тут читаемые
и что теперь делать?
...
Рейтинг: 0 / 0
JavaMail
    #38501019
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в какой кодировке jsp страница?

если в UTf-8 то перед тем как получить данные из запроса выполните
request.setCharacterEncoding("UTF-8")

снова делайте дебаг и смотрите читаемые ли данные
...
Рейтинг: 0 / 0
JavaMail
    #38501042
Fyn2013
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lleming,

сделал, снова нечитаемые
...
Рейтинг: 0 / 0
JavaMail
    #38501044
Fyn2013
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lleming,

перед дебагом request.setCharacterEncoding("UTF-8") добавил в сервлет сразу после
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
...
Рейтинг: 0 / 0
JavaMail
    #38502580
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fyn2013А когда вписываю на русском имя, тему и текст, то только на почте тема письма иероглифами виднаГлюкофича обоих аутлуков, требующая обёртывания заголовков в base64. Можно и в qp, но base64 - компактнее.
Глюкофича "освящена" стандартным порядком mime-заголовков.
...
Рейтинг: 0 / 0
34 сообщений из 34, показаны все 2 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / JavaMail
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]