Форум программистов, компьютерный форум, киберфорум
Java: Spring, Spring Boot
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 13.05.2017
Сообщений: 5

Java Spring отправка емайла

13.05.2017, 12:02. Показов 1150. Ответов 9

Студворк — интернет-сервис помощи студентам
Дорогие коллеги. Вот уже неделю бьюсь над одной проблемой.
Работаю над регистрацией пользователя в проекте Java+Spring
Проблема с отправкой письма на адрес получателя. Есть класс отправщика:

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
53
import main.webservices.listeners.MySessionListener;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
 
 
import java.util.Properties;
 
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
 
public class SendMailSSL {
    static final Logger userLogger = LogManager.getLogger(MySessionListener.class);
 
    public void sendEMail(String mess, String subj, String toEmail) {
      Properties props = System.getProperties();
       // Properties props = System.getProperties();
 
     //   props.put("mail.smtp.host", "smtp.gmail.com");
        props.put("mail.host", "smtp.gmail.com");
        props.put("mail.defaultEncoding", "UTF-8");
        props.put("mail.mime.charset","UTF-8");
        props.put("mail.smtp.host", "smtp.gmail.com");
        props.put("mail.smtp.socketFactory.port", "465");
        props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.port", "465");
        Session session = Session.getDefaultInstance(props,
                new javax.mail.Authenticator() {
                    protected PasswordAuthentication getPasswordAuthentication() {
                        return new PasswordAuthentication("mymail@gmail.com", "password");
                    }
                });
 
        try {
 
            MimeMessage message = new MimeMessage(session);
 
            message.setFrom(new InternetAddress("mymail@gmail.com"));
            message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(toEmail));
            message.setSubject(subj, "UTF-8");
            message.setText(mess, "UTF-8");
 
            Transport.send(message);
 
            userLogger.debug("Письмо отправлено");
 
        } catch (MessagingException e) {
            throw new RuntimeException(e);
        }
    }
 
}
При дебаге текст письма уходит корректно. На почту приходит подобный код

0JLRiyDRg9GB0L/QtdGI0L3QviDQt9Cw0YDQtdCz0LjRgdGC0YDQuNG A0L7QstCw0LvQuNGB0Ywu
CiDQktCw0Ygg0LvQvtCz0LjQvTpxd2VydHkK0JLQ sNGIINC/0LDRgNC+0LvRjDogcXdlcnR5MQrQ
odC+0YXRgNCw0L3QuNGC0LUg0LXQs9C+INC40LvQ uCDQt9Cw0L/QvtC80L3QuNGC0LUuCiDQlNC7
0Y8g0LLRhdC+0LTQsCDQvdCwINGB0LDQudGCINC4 0YHQv9C+0LvRjNC30YPQudGC0LUg0YHRgdGL
0LvQutGDIGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC8=
При этом в поле "Тема сообщения" не проставляется ничего.

Данный отправщик работает корректно без применения спринга. Не могу понять где ломается текст.
Помогите пожалуйста.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.05.2017, 12:02
Ответы с готовыми решениями:

Плагин для браузера на Java с использованием Spring
Собственно, сабж в теме. Обозначили мне как задание. Джаву +- знаю, но не никогда не писал на ней что-то серьезное, а в вебе вообще...

Отправка емайла
Вот пытаюсь сделать отправку по емайлу,выдает ошибку.Не могу понять в чем дело... unit Unit5; interface uses Windows,...

Отправка почты в Spring MVC
Добрый день. Пытаюсь используя Spring MVC сделать отправку почты. делаю бин : @Bean public JavaMailSender javaMailSender(){ ...

9
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
13.05.2017, 12:59
вместо setText попробуй setContent и укажи в параметра mime-type text/plain.
0
0 / 0 / 0
Регистрация: 13.05.2017
Сообщений: 5
13.05.2017, 13:32  [ТС]
Я в пропертях добавил следующую строчку
Java
1
   props.put("mail.mime-type","text/plain;charset=UTF-8");
Поменял и вот эту часть
Java
1
2
   message.setContent(mess, "UTF-8");
            message.setDataHandler(new DataHandler(mess, "text/plain"));
Надо сказать, это возымело определенный эффект.
Теперь в тексте письма я получаю следующее:
You've registered successfully.
??? ?????:testtest
??? ??????: Test09
????????? ??? ??? ?????????.
??? ????? ?? ???? ??????????? ?????? http://localhost:8080/
Насколько я понимаю, это уже не битый текст. Это просто не срабатывает русская кодировка. При этом английские символы и цифры пишутся корректно.
Также остается пустым поле темы сообщения.
Есть соображения как это исправить?
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
13.05.2017, 13:39
Цитата Сообщение от soufee Посмотреть сообщение
это уже не битый текст
в первом случае был не битый текст, а base64
почему unicode выглядит как ??? надо разбираться, может сам текст у тебя не в utf-8, может программма, который ты письмо смотришь utf-8 не читает, ну и так далее, еще несколько вариантов
0
0 / 0 / 0
Регистрация: 13.05.2017
Сообщений: 5
13.05.2017, 13:42  [ТС]
Само письмо смотрю в майл.ру ) там с кодировкой вроде проблем нет, русский текст читается.
Мой текст, как видно по коду, устанавливается как UTF-8.


Java
1
2
3
4
5
 props.put("mail.defaultEncoding", "UTF-8");
 props.put("mail.mime.charset","UTF-8");
. . . 
 message.setSubject(subj, "UTF-8");
 message.setText(mess, "UTF-8");
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
13.05.2017, 14:13
Цитата Сообщение от soufee Посмотреть сообщение
устанавливается как UTF-8
ты пишешь, что то, что ты передал, нужно раскодировать utf-8, если сам текст, который ты вводишь не utf-8, то, очевидно, его не получится раскодировать
0
0 / 0 / 0
Регистрация: 13.05.2017
Сообщений: 5
13.05.2017, 14:19  [ТС]
Java
1
2
3
4
5
6
7
8
 String message = "You've registered successfully.\n Ваш логин:" + gamer.getNiackname() + "\nВаш пароль: " +
                    gamer.getPassword() + "\nСохраните его или запомните.\n Для входа на сайт используйте ссылку" +
                    " http://localhost:8080/";
            String subject = "Confirmation of registratin";
 
            SendMailSSL mail = new SendMailSSL();
            String toMail = gamer.getEmail();
            mail.sendEMail(message, subject, toMail);
0
Эксперт Java
378 / 370 / 114
Регистрация: 30.06.2010
Сообщений: 1,445
15.05.2017, 06:29
soufee, посмотри, например в ide, в какой кодировке исходный файл с объявлением переменной
0
0 / 0 / 0
Регистрация: 13.05.2017
Сообщений: 5
15.05.2017, 10:44  [ТС]
LeX, UTF-8 на всех страницах.
0
Эксперт Java
378 / 370 / 114
Регистрация: 30.06.2010
Сообщений: 1,445
15.05.2017, 14:48
soufee, причем тут страницы то? смотри java исходник с кодом
Цитата Сообщение от soufee Посмотреть сообщение
Java
1
2
3
4
5
6
7
String message = "You've registered successfully.\n Ваш логин:" + gamer.getNiackname() + "\nВаш пароль: " +
* * * * * * * * * * gamer.getPassword() + "\nСохраните его или запомните.\n Для входа на сайт используйте ссылку" +
* * * * * * * * * * " http://localhost:8080/";
* * * * * * String subject = "Confirmation of registratin";
SendMailSSL mail = new SendMailSSL();
* * * * * * String toMail = gamer.getEmail();
* * * * * * mail.sendEMail(message, subject, toMail);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.05.2017, 14:48
Помогаю со студенческими работами здесь

JQuery.ajax - отправка формы в Spring
При отправке формы через клик по кнопке submit всё хорошо. При отправки данных формы через ajax возникает проблема с полем text. Суть...

Spring - отправка почты с Html - нарушение кодировки
Я настроил фильтр кодировки , при инициализации DispatcherServlet public class MvcInitializer implements WebApplicationInitializer { ...

Отправка массива с сервера Java на клиента Java android
Подскажите, пожалуйста, как объявить массив на сервере и затем передать этот массив на экран клиента?Сервер написан на java, клиент -java...

Java (spring) и C++
Добрый день. Подскажите, плз... Есть модуль со сложной математикой написанный на С++ (очень много сложно-отлаженного кода - набор...

Java Spring
Где можно хорошо и добросовестно выучить фреймворк Spring(весь)?Желательно на русском.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru