Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Отправка файла на e-mail. Отслеживание прогресса.


Автор: SimpAlex 29.1.2010, 18:17
Здравствуйте!

У меня следующая проблема:

Есть некая база данных, программа каждый день в определенное время сохраняет полностью ее схему в файл и этот файл должен высылаться на ящик (*@mail.ru), который является дешевым и сердитым вариантом для хранения.

Все формируется, все отправляется. Только файлы достаточно большие (до 10 мб) и хотелось бы как-нибудь отслеживать прогресс отправки файла на мыло (хочу получить данные и сформировать прогрессбар или просто процент рассчитывать).

Вот привел код, благодаря которому и происходит отправка.

Логически я представляю решение проблемы следующим образом: узнать размер файла изначально, а оптом как-то отслеживать текущее состояние передачи.

Что посоветуете, куда податься? может переработать сам механизм отправки?


Код

import org.apache.commons.*;
...

// Добавить файл для пересылки.
            EmailAttachment attachment = new EmailAttachment();
            attachment.setPath("k.tmp");
            attachment.setDisposition(EmailAttachment.ATTACHMENT);
            attachment.setDescription("Дамп базы");

// Создать письмо
            MultiPartEmail email = new MultiPartEmail();
            email.setHostName("smtp.mail.ru");
            email.setSmtpPort(2525);
            email.setAuthentication("user", "password");
            email.addTo("*@mail.ru", "To");
            email.setFrom("*@mail.ru", "From");
            email.setSubject("Дамп+Параметры");
            email.setMsg("Дамп + параметры");
 
// Добавить файл
            System.err.println("сформировали");
            email.attach(attachment);

            
// Высылаем письмо
            System.err.println("высылаем");
            email.send(); // TODO add your handling code here:

// Отправлено!
            System.err.println("ОТПРАВЛЕНЁ!");

Автор: MaxPayneC 29.1.2010, 20:10
Рекомендую обратить внимание на класс SwingWorker и его документацию.

Автор: SimpAlex 30.1.2010, 14:27
Эта операция - отправка письма, само собой идет в отдельном потоке.

Проблема не в том, что замирает интерфейс, этого нет - изза многопоточности приложения, а в весьма нестабильной скоростью коннекта, получается что файл может загружаться и за считанные секунды, а бывает и несколько минут, но "особоодаренные пользователи" не дожидаясь отмашки об отправки письма начинают тыкать "оправить еще" и так далее, поэтому и хотелось чтото наглядное им предоставить, что прогресс есть, не выключайте программу и не изобретайте велосипед, а дождитесь пока будет 100%.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)