powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / JavaMail. Отправка вложений. Проблемы с кодировкой.
9 сообщений из 9, страница 1 из 1
JavaMail. Отправка вложений. Проблемы с кодировкой.
    #33164432
GMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема состоит в том, что имена всех вложенных файлов отображаются неверно, если имя в кириллице.
Может кто укажет, где надо подправить.
Вот код, который отправляет письмо:
Код: plaintext
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.
    // Процедура, отправляющая письмо, с вложениями
     public   void  sendMailWithAttachments (File[] _attFiles)  throws  Exception {
        Properties props = System.getProperties();
        props.put("mail.smtp.host", hostMail);
        props.put("mail.smtp.auth", "true");
        Session session_m = Session.getDefaultInstance(props,  null );

        message =  new  MimeMessage (session_m);
        message.setFrom ( new  InternetAddress(fromEmail,fromFullname));
        message.addRecipient(Message.RecipientType.TO,  new  InternetAddress(emailUser, fullnameUser));
        message.setSubject(subject);

        MimeBodyPart messageBodyPart =  new  MimeBodyPart();
        messageBodyPart.setText(body);

        Multipart multipart =  new  MimeMultipart();
        multipart.addBodyPart(messageBodyPart);

         int  i =  0 ;
         while  (i < _attFiles.length) {
            messageBodyPart =  new  MimeBodyPart();
            DataSource source =  new  FileDataSource(_attFiles[i]);
            messageBodyPart.setDataHandler( new  DataHandler(source));
            messageBodyPart.setFileName(_attFiles[i].getName());
            multipart.addBodyPart(messageBodyPart);
            i++;
        }
        message.setHeader("Content-Type","text/plain;charset=windows-1251");
        message.setContent(multipart);

        SMTPTransport t = (SMTPTransport)session_m.getTransport("smtp");
		t.connect(hostMail, mailUser, mailPassword);
		t.sendMessage(message, message.getAllRecipients());
    }
...
Рейтинг: 0 / 0
JavaMail. Отправка вложений. Проблемы с кодировкой.
    #33164513
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
//messageBodyPart.setFileName(_attFiles[i].getName());
messageBodyPart.setFileName(javax.mail.internet.MimeUtility.encodeWord(_attFiles[i].getName()));
...
Рейтинг: 0 / 0
JavaMail. Отправка вложений. Проблемы с кодировкой.
    #33165266
GMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, Денис.
...
Рейтинг: 0 / 0
JavaMail. Отправка вложений. Проблемы с кодировкой.
    #33166344
GMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще вопрос про кодировку по тому же куску кода, с заменой строки, как подсказал Денис.
Почему при запуске из IDEA письмо приходит так как нужно, в нормальной кодировке.
Если же запускать из *.bat, то письмо приходит в нечитаемой кодировке, да и ктому же MSOutlook при его приеме виснет.
Причем, если убрать строки, отвечающие за отпраку вложений, т. е. оставить так как показано ниже, то все отлично, и при запуске из IDEA, и при запуске из батника.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
     public   void  sendMail ()  {
        Properties props = System.getProperties();
        props.put("mail.smtp.host", hostMail);
        props.put("mail.smtp.auth", "true");
        Session session_m = Session.getDefaultInstance(props,  null );

         try  {
            message =  new  MimeMessage (session_m);
            message.setFrom ( new  InternetAddress(fromEmail,fromFullname));
            message.addRecipient(Message.RecipientType.TO,  new  InternetAddress(emailUser, fullnameUser));
            message.setSubject(subject);
            message.setText(body);
            message.setHeader("Content-Type","text/plain;charset=windows-1251");

            SMTPTransport t = (SMTPTransport)session_m.getTransport("smtp");
		    t.connect(hostMail, mailUser, mailPassword);
		    t.sendMessage(message, message.getAllRecipients());
        }
         catch  (Exception e) {
        }
    }
...
Рейтинг: 0 / 0
JavaMail. Отправка вложений. Проблемы с кодировкой.
    #33166639
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GMaxПочему при запуске из IDEA письмо приходит так как нужно, в нормальной кодировке.
Если же запускать из *.bat, то письмо приходит в нечитаемой кодировке, да и ктому же MSOutlook при его приеме виснет.
Попробуй запустить класс SendFile из прилагаемого архива. Для компилирования - buil.bat, запуск - run.bat. Только поправь в них пути к библиотекам и параметры запуска в run.bat:

Код: plaintext
usage: java SendFile <from> <smtp> <file> debug[true|false] <to> ... <to>
...
Рейтинг: 0 / 0
JavaMail. Отправка вложений. Проблемы с кодировкой.
    #33166799
GMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Этот пример работает.
Теперь буду копаться, и сравнивать, что надо менять.
Спасибо еще раз.
...
Рейтинг: 0 / 0
JavaMail. Отправка вложений. Проблемы с кодировкой.
    #33166940
GMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем если указать в параметрах запуска java -Dfile.encoding=windows-1251, то все приходит в норму.
...
Рейтинг: 0 / 0
JavaMail. Отправка вложений. Проблемы с кодировкой.
    #33167001
GMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А в итоге сделал так и все заработало.
Код: plaintext
props.put("mail.mime.charset", "windows-1251");
...
Рейтинг: 0 / 0
JavaMail. Отправка вложений. Проблемы с кодировкой.
    #33167055
Dima Yermak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
или
-Dmail.mime.charset="windows-1251"


Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / JavaMail. Отправка вложений. Проблемы с кодировкой.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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