Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Как к письму прицепить аттачмент? / 16 сообщений из 16, страница 1 из 1
22.05.2007, 15:17:19
    #34542602
Глюк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как к письму прицепить аттачмент?
Аттачмент - не файл. Генерится текст и надо минуя файл прицепить его к письму.
Помогите!
...
Рейтинг: 0 / 0
22.05.2007, 15:34:11
    #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
22.05.2007, 16:59:11
    #34543126
Глюк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как к письму прицепить аттачмент?
Это то конечно здорово.
Делаю так:
авторInputStream IS = new StringBufferInputStream("Text");
StreamDataSource SDS = new StreamDataSource(IS);
DataHandler DH = new DataHandler(SDS);
MimeBodyPart mbp2 = new MimeBodyPart();
К письму аттачмент прикрепляется но какойто странный. Странное назнваие файла, непонятно откуда взявшееся, и пустое содержание.
...
Рейтинг: 0 / 0
22.05.2007, 17:09:57
    #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
23.05.2007, 09:31:29
    #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
23.05.2007, 10:20:13
    #34544560
Глюк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как к письму прицепить аттачмент?
Беда
...
Рейтинг: 0 / 0
23.05.2007, 11:09:44
    #34544759
Глюк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как к письму прицепить аттачмент?
Не получается!!!!
...
Рейтинг: 0 / 0
23.05.2007, 11:37:48
    #34544895
Глюк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как к письму прицепить аттачмент?
Ктонибудь ОТЗОВИТЕСЬ!!!
...
Рейтинг: 0 / 0
23.05.2007, 11:52:58
    #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
23.05.2007, 13:39:07
    #34545450
Глюк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как к письму прицепить аттачмент?
Attachment это из какой библиотеки класс?

Проблемма то в том чтобы запихнуть правильно набор строк в поток и передать в DataHandler!
Почему же пустой файл получается то?
...
Рейтинг: 0 / 0
23.05.2007, 13:58:40
    #34545546
Глюк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как к письму прицепить аттачмент?
Неужели не сталкивались?
...
Рейтинг: 0 / 0
23.05.2007, 14:31:01
    #34545705
Leonidv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как к письму прицепить аттачмент?
Если совсем, ну совсем не получается правильно, сделайте не правильно. Создайте временный файл и его прикрепите к письму.
...
Рейтинг: 0 / 0
23.05.2007, 14:38:10
    #34545734
Глюк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как к письму прицепить аттачмент?
Вот временный файл вообще никак делать не хочется.
Неужили никто никто не делал так? Не верю!
...
Рейтинг: 0 / 0
23.05.2007, 14:46:20
    #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
23.05.2007, 14:52:54
    #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
23.05.2007, 17:16:27
    #34546474
Глюк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как к письму прицепить аттачмент?
Ура! Огромное всем спасибо!
Вариант с ByteArrayDataSource прошел.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Как к письму прицепить аттачмент? / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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