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

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

13.05.2017, 12:02. Показов 1173. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru