powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Как к письму прицепить аттачмент?
16 сообщений из 16, страница 1 из 1
Как к письму прицепить аттачмент?
    #34542602
Глюк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Аттачмент - не файл. Генерится текст и надо минуя файл прицепить его к письму.
Помогите!
...
Рейтинг: 0 / 0
Как к письму прицепить аттачмент?
    #34542686
zalexaka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
создать свою имплементацию javax.activation.DataSource типа

Код: 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.
 public   class  StreamDataSource  implements  DataSource {

     public  StreamDataSource(InputStream stream) {
         this .stream = stream;
    }

     public  String getContentType() {
         return  "application/octet-stream";
    }

     public  InputStream getInputStream()  throws  IOException {
         return  stream;
    }

     public  String getName() {
         return  "StreamDataSource";
    }

     public  OutputStream getOutputStream()  throws  IOException {
         throw   new  RuntimeException();
    }

     private  InputStream stream;
}

ну и

Код: plaintext
1.
2.
3.
StreamDataSource sds =  new  StreamDataSource(some stream here)
MimeBodyPart mbp =  new  MimeBodyPart();
mbp.setDataHandler( new  DataHandler(sds));
...
Рейтинг: 0 / 0
Как к письму прицепить аттачмент?
    #34543126
Глюк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это то конечно здорово.
Делаю так:
авторInputStream IS = new StringBufferInputStream("Text");
StreamDataSource SDS = new StreamDataSource(IS);
DataHandler DH = new DataHandler(SDS);
MimeBodyPart mbp2 = new MimeBodyPart();
К письму аттачмент прикрепляется но какойто странный. Странное назнваие файла, непонятно откуда взявшееся, и пустое содержание.
...
Рейтинг: 0 / 0
Как к письму прицепить аттачмент?
    #34543156
zalexaka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыли про
Код: plaintext
1.
mbp.setFileName("типа имя файла");
если русские букавки то
Код: plaintext
mbp.setFileName(MimeUtility.encodeText("типа имя файла"));
да и вместо
Код: plaintext
1.
InputStream IS =  new  StringBufferInputStream("Text");
будет лучше
Код: plaintext
InputStream IS =  new  ByteArrayInputStream("Text".getBytes());
...
Рейтинг: 0 / 0
Как к письму прицепить аттачмент?
    #34544405
Глюк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Огромное спасибо за помощь!
Делаю так:

авторInputStream IS = new ByteArrayInputStream("11111111".getBytes());
StreamDataSource SDS = new StreamDataSource(IS);
MimeBodyPart mbp2 = new MimeBodyPart();
mbp2.setFileName("TEST.txt");

mbp2.setDataHandler(new DataHandler(SDS));
mp.addBodyPart(mbp2);
Но файлик почемуто приходит пустой!
...
Рейтинг: 0 / 0
Как к письму прицепить аттачмент?
    #34544560
Глюк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Беда
...
Рейтинг: 0 / 0
Как к письму прицепить аттачмент?
    #34544759
Глюк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не получается!!!!
...
Рейтинг: 0 / 0
Как к письму прицепить аттачмент?
    #34544895
Глюк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ктонибудь ОТЗОВИТЕСЬ!!!
...
Рейтинг: 0 / 0
Как к письму прицепить аттачмент?
    #34544968
mozheyko_d
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот куски из работающего:
DataHandler:
Код: 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.
35.
 import  javax.activation.DataSource;

 public   class  AttachmentDataSource  implements  DataSource {
    
     private  Attachment attachment;
    
     public  AttachmentDataSource(Attachment attachment) {
         this .attachment = attachment;
    }
    
     public  String getName() {
         return  attachment.getFileName();
    }
    
     public  String getContentType() {
         return  attachment.getContentType();
    }
    
     public  OutputStream getOutputStream() {
         return   null ;
    }

     public  InputStream getInputStream() {
         return   new  ByteArrayInputStream(attachment.getData());
    }

     public  Attachment getAttachment() {
         return  attachment;
    }

     public   void  setAttachment(Attachment val) {
         this .attachment = val;
    }

}
Отправка:
Код: 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.
...
Message msg =  new  MimeMessage(mailSession);
            
            msg.setFrom( new  InternetAddress(eMail.getFromAddress()));
            msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(executedService.getSubscribedservice().getAddress().getEmail()));
            msg.setSubject(eMail.getSubject());
            msg.setSentDate( new  Date());
            
            MimeBodyPart bodyPart =  new  MimeBodyPart();
            bodyPart.setText(eMail.getBody());
            
            Multipart multiPart =  new  MimeMultipart();
            multiPart.addBodyPart(bodyPart);
            
             if  (eMail.getAttachments() !=  null ) {
             
                Attachment[] attachments = eMail.getAttachments().toArray( new  Attachment[ 0 ]);
                
                 for  ( int  i =  0 ; i < attachments.length; i++) {
                    AttachmentDataSource ads =  new  AttachmentDataSource(attachments[i]);
                    MimeBodyPart attachmentPart =  new  MimeBodyPart();
                    attachmentPart.setDataHandler( new  DataHandler(ads));
                    attachmentPart.setFileName(ads.getName());
                    multiPart.addBodyPart(attachmentPart);
                }
                
            }
...
...
Рейтинг: 0 / 0
Как к письму прицепить аттачмент?
    #34545450
Глюк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Attachment это из какой библиотеки класс?

Проблемма то в том чтобы запихнуть правильно набор строк в поток и передать в DataHandler!
Почему же пустой файл получается то?
...
Рейтинг: 0 / 0
Как к письму прицепить аттачмент?
    #34545546
Глюк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Неужели не сталкивались?
...
Рейтинг: 0 / 0
Как к письму прицепить аттачмент?
    #34545705
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если совсем, ну совсем не получается правильно, сделайте не правильно. Создайте временный файл и его прикрепите к письму.
...
Рейтинг: 0 / 0
Как к письму прицепить аттачмент?
    #34545734
Глюк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот временный файл вообще никак делать не хочется.
Неужили никто никто не делал так? Не верю!
...
Рейтинг: 0 / 0
Как к письму прицепить аттачмент?
    #34545770
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как делали, вам уже написали. Ну вот возьмите готовую реализацию:
http://jakarta.apache.org/commons/email/api-release/org/apache/commons/mail/MultiPartEmail.html
http://jakarta.apache.org/commons/email/api-release/org/apache/commons/mail/ByteArrayDataSource.html
Надеюсь, как их использовать сами разберетесь?
...
Рейтинг: 0 / 0
Как к письму прицепить аттачмент?
    #34545814
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonidv wrote:

> http://jakarta.apache.org/commons/email/api-release/org/apache/commons/mail/ByteArrayDataSource.html

Он даже уже включен в JavaMail как javax.mail.util.ByteArrayDataSource.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Как к письму прицепить аттачмент?
    #34546474
Глюк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ура! Огромное всем спасибо!
Вариант с ByteArrayDataSource прошел.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Как к письму прицепить аттачмент?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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