powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / Java [игнор отключен] [закрыт для гостей] / Как определить размер посылаемого emal-а
2 сообщений из 2, страница 1 из 1
Как определить размер посылаемого emal-а
    #32232839
Кристофер Робин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я использую JavaMail для посылки email-ов. Все работает замечательно, но недавно появилась потребность писать сведения о каждой посылке в log (посылатель, получатель, размер сообщения, кол-во mime parts и т.д.).
Я не могу узнать размер посылаемого email-а. Мой код выглядит примерно так:

MimeMessage message = new MimeMessage(jmail_session);
message.setFrom(from);
message.setSubject(subject);
message.addRecipient(Message.RecipientType.TO, to);

//текст сообщения
MimeMultipart multipart = new MimeMultipart();
MimeBodyPart body = new MimeBodyPart();
body.setText(getBody(), "iso-8859-1");
multipart.addBodyPart(body);

//аттачменты . Эта часть может делаться в цикле несколько раз

BodyPart attachment = new MimeBodyPart();
DataSource ds = new ByteArrayDataSource(data, null, filename);
attachment.setDataHandler(new DataHandler(ds));
attachment.setDisposition("attachment; filename=\"" + filename + "\"");
attachment.setFileName(filename);
multipart.addBodyPart(attachment);

message.setContent(multipart);
Transport.send(message);


У класса MimeMessage ecть метод getSize(), но он всегда возвращает -1.
Я могу получить InputStream и посчитать ко-во байт в нем:

InputStream is = message.getInputStream();
int size = 0;
while (is.read() != -1) {
size++;
}

Проблема в том, что это значение ВСЕГДА меньше реального, т.к. сообщение переводится в кодировку base64 перед отправкой.

У кого-нибудь есть соображения по этому поводу?
...
Рейтинг: 0 / 0
Как определить размер посылаемого emal-а
    #32236449
Фотография Полковник Трофимов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы message пихал в ByteArrayOutputStream

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
    MimeMessage message = new MimeMessage(jmail_session); 
    ...
    OutputStream   bs = new ByteArrayOutputStream(); 
    ...
    message.writeTo(bs);
    ...    
    int size =  0 ; 
    while (is.read() != - 1 ) { 
    size++; 
    } 



В бою проверенно. Размер показывает правильно.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Как определить размер посылаемого emal-а
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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