powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / JavaMail и отправка сообщений
10 сообщений из 10, страница 1 из 1
JavaMail и отправка сообщений
    #34073907
nikoracul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите как можно отправить сообщение с вложением в кодировке uuencode?
Формат сообщения должен быть:

заголовки.....
тело сообщения....
begin 666 filename
сам файл в uuencode
end
...
Рейтинг: 0 / 0
JavaMail и отправка сообщений
    #34074013
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JavaMail и почитать про MimeBodyPart
...
Рейтинг: 0 / 0
JavaMail и отправка сообщений
    #34074345
nikoracul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: 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.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
 try  {
            Properties props = System.getProperties();
            props.put("mail.smtp.host", SMTPHost);
            props.put("mail.mime.charset","koi8-r");
            
            MimeMessage msg =  new  MimeMessage(Session.getDefaultInstance(props,  null ));
            // Set Mailer
            msg.setHeader("X-Mailer", "JavaMail");
            // Set From
            msg.setFrom( new  InternetAddress(from));
            // Set To
             if  (to !=  null  && to.length() >  0 )
                msg.setRecipients(MimeMessage.RecipientType.TO,  InternetAddress.parse(to, false));
            // Set cc
             if  (cc !=  null  && cc.length() >  0 )
                msg.setRecipients(MimeMessage.RecipientType.CC,  InternetAddress.parse(cc, false));
            // Set subject
             if  ( subject !=  null  && subject.length() >  0  )  msg.setSubject(subject);
             else  msg.setSubject("(no subject)");
            // Set SentDate
            msg.setSentDate( new  Date());
            
             try  {
                    DriverManager.registerDriver( new  oracle.jdbc.driver.OracleDriver());
                    //conn=(oracle.jdbc.driver.OracleConnection)DriverManager.getConnection("jdbc:default:connection:");
                    conn = DriverManager.getConnection("jdbc:oracle:oci8:@bd", "usr", "pasw");
                    pstmt=(OraclePreparedStatement)conn.prepareStatement("select field from table where rownum < 2");
                    pstmt.execute();
                    ResultSet Cur = pstmt.getResultSet();
        
                    attach = BLOB.createTemporary(conn, true, BLOB.DURATION_SESSION);
                    attach = (oracle.sql.BLOB) Cur.getBlob( 1 );
                    pstmt.close();
                }  catch (SQLException e) { }
            
            msg.addHeader("Content-Disposition"," attachment; Filename=\""+attachmentFileName+"\"");
            msg.addHeader("Content-transfer-encoding","uuencode");         
            
            OutputStream out = MimeUtility.encode(attach.getBinaryOutputStream(),"uuencode");                        
                     
            String BufMsg =  null ;
            BufMsg = "begin 666 " + attachmentFileName + "\r\n";
            BufMsg = BufMsg + out.toString() + "\r\n";
            BufMsg = BufMsg + "'" + "\r\n" + "end";  
            
            msg.setText(BufMsg);
		
	 	Transport.send(msg);
Письмо приходит. Но вместо вложения строчка - com.sun.mail.util.UUEncoderStream@1e67e6a
...
Рейтинг: 0 / 0
JavaMail и отправка сообщений
    #34074595
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты получил поток OutputStream out, после чего в строку записываешь его out.toString(). Он тебе и пишет то, что этот метод возвращает. Поток надо прочитать .
...
Рейтинг: 0 / 0
JavaMail и отправка сообщений
    #34074629
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
BodyPart part= new  MimeBodyPart(attach.getBinaryOutputStream());
msg.addBodyPart(part);
- не надо добавлять файл как текст, кодирование производится автоматически
...
Рейтинг: 0 / 0
JavaMail и отправка сообщений
    #34074752
nikoracul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Неа. Так не катит. Оно даже не компилится. А как прочитать OutputStream поток?
...
Рейтинг: 0 / 0
JavaMail и отправка сообщений
    #34074999
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nikoraculОно даже не компилится
- согласен, облажался. Наверное, удобней всего будет использовать библиотеку Jakarta Email , и использовать такую конструкцию:
Класс MultiPartEmail
метод attach(javax.activation.DataSource ds, java.lang.String name, java.lang.String description)
как DataSource передать объект типа ByteArrayDataSource
...
Рейтинг: 0 / 0
JavaMail и отправка сообщений
    #34075006
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nikoraculА как прочитать OutputStream поток?
- читать надо из InputStream-а:
Код: plaintext
1.
InputStream in=Cur.getBinaryStream("field");
...
Рейтинг: 0 / 0
JavaMail и отправка сообщений
    #34076285
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nikoraculА как прочитать OutputStream поток?
Извиняюсь, надо не читать его, а в него писать. Может, не то, что тебе надо, но примерно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Blob blob = Cur.getBlob( 1 );
String attachmentFileName = ...;
...
msg.addHeader("Content-Disposition", " attachment; Filename=\"" + attachmentFileName + "\"");
msg.addHeader("Content-transfer-encoding", "uuencode");

ByteArrayOutputStream out =  new  ByteArrayOutputStream();
OutputStream encodeOut = MimeUtility.encode(out, "uuencode");
InputStream blobIn = blob.getBinaryStream();
 int  length;
 byte [] buf =  new   byte [ 8192 ];
 while  ((length = blobIn.read(buf)) != - 1 ) {
  encodeOut.write(buf,  0 , length);
}
encodeOut.close();

msg.setText( new  String(out.toByteArray()));
...
Рейтинг: 0 / 0
JavaMail и отправка сообщений
    #34076496
nikoracul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да !!!!!!!!!!!!!!!!!!!! Это то что надо !!!!!!!!!!!!!!! Я понял свои ошибки :) Большое спасибо.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / JavaMail и отправка сообщений
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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