Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
18 / 18 / 7
Регистрация: 20.03.2012
Сообщений: 585

Сделать ProgressBar на отправку почты

18.01.2016, 14:39. Показов 988. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Сделал функцию для отправки почты с прикрепленным файлом:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
    AnsiString sFile =  "C:\\001.jpg";
    TIdAttachment *pAttachment;
    pAttachment = new TIdAttachmentFile(IdMessage1->MessageParts, sFile);
        IdSMTP1->Username = "***@mail.ru";    //логин на сервере
    IdSMTP1->Password = "***";       // пароль
    IdSMTP1->Host = "smtp.mail.ru";      // URL smtp
 
    IdMessage1->Body->Text    = L"Test! И русский текст!\nNew string." ;    // текст
    IdMessage1->From->Address = "***@mail.ru";    //  отправитель
    IdMessage1->Recipients->EMailAddresses = "***@yandex.ru";    // получатель
 
    IdMessage1->Subject =  L"Test 3 with file.\n Тест" ;       // тема
    IdSMTP1->Port = 587;  // Порт для mail - 587, хотя на mail.ru сказано, что 465 !!!
    IdSMTP1->Connect();  // На этой строчке программа виснет, если не включить SSL
 
    if (IdSMTP1->Connected())
        IdSMTP1->Send(IdMessage1);
    else
        ShowMessage(L"Не удалось законнектиться!.. (((");
 
    IdSMTP1->Disconnect();
Дело в том, что прикрепляемый файл может быть очень большого размера (да и тело письма тоже немаленькое), например, больше 10 МБ.
Как отследить процесс загрузки письма на сервер и/или его отправки? (Например, в виде прогрессбара)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.01.2016, 14:39
Ответы с готовыми решениями:

Как только с помощью JavaScripta сделать отправку почты через форму?
Как только с помощью JavaScripta сделать отправку почты через форму. Знаю, что mailto, но как сделать чтобы данные введенные в форму были...

Как организовать отправку почты?
В скрипте регистрации аккаунта написал такой кусочек: $verify = mail ($email,$sub,$mes,"Content-type:text/plain; charset =...

Как автоматизировать отправку почты с сервера?
Народ! Подскажите, плз, как можно автоматизировать процесс отправки почты пользователю сайта. Как например на всех современных сайтах,...

14
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33379 / 21503 / 8236
Регистрация: 22.10.2011
Сообщений: 36,899
Записей в блоге: 11
18.01.2016, 15:13
Работать с событиями OnWorkBegin/OnWork. Только аккуратно: AWorkCountMax, получаемый в OnWorkBegin, может показывать 0, поэтому: ProgressBar и Mail Agent
1
18 / 18 / 7
Регистрация: 20.03.2012
Сообщений: 585
18.01.2016, 15:35  [ТС]
volvo, у меня событие OnWork вообще не срабатывает (ни разу не вызывается). В чем может быть дело?

Добавлено через 9 минут
Может, свойство какое настроить нужно или еще чего?...

Добавлено через 44 секунды
При этом OnWorkBegin и OnWorkEnd - срабатывают, письмо отправляется корректно.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33379 / 21503 / 8236
Регистрация: 22.10.2011
Сообщений: 36,899
Записей в блоге: 11
18.01.2016, 15:41
Если все правильно связано в ObjectInspector-е (на вкладке Events, я имею в виду) - то должно работать.

Добавлено через 2 минуты
Какая версия Indy? Офсайт говорит, что на старых да, была такая проблема, в Indy10 ее уже давно решили. Убедись, что у тебя последний релиз, и последняя сборка
0
18 / 18 / 7
Регистрация: 20.03.2012
Сообщений: 585
18.01.2016, 15:42  [ТС]
volvo, связано вроде верно, во всяком случае, если дважды кликнуть в ObjectInspector-е напротив OnWork, редактор кода переходит на нужный метод:
C++
1
2
3
4
5
6
void __fastcall TForm1::IdSMTP1Work(TObject *ASender, TWorkMode AWorkMode, __int64 AWorkCount)
{
    ShowMessage(L"Проверка, что метод вызывается");
    Gauge1->Progress = AWorkCount;
    Application->ProcessMessages();
}
Добавлено через 1 минуту
Цитата Сообщение от volvo Посмотреть сообщение
Убедись, что у тебя последний релиз.
А как? Я ничего не устанавливал, стоят штатные компоненты, входящие в XE6.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33379 / 21503 / 8236
Регистрация: 22.10.2011
Сообщений: 36,899
Записей в блоге: 11
18.01.2016, 16:38
C++
1
    ShowMessage(IdSMTP1->Version);
что показывает?
0
18 / 18 / 7
Регистрация: 20.03.2012
Сообщений: 585
19.01.2016, 00:04  [ТС]
Цитата Сообщение от volvo Посмотреть сообщение
что показывает?
10.6.0.5122
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33379 / 21503 / 8236
Регистрация: 22.10.2011
Сообщений: 36,899
Записей в блоге: 11
19.01.2016, 00:13
Ну вот, видишь. А у меня на не самом уже новом на сегодня билде 5298 (текущий-то вообще 5328, но мне его в лом ставить, вот выйдет новый Лазарус под FPC 3.0.0 - тогда и поставлю все вместе) показывает 10.6.2.0... Так что возможно, проблема у тебя как раз в устаревшей версии.
0
18 / 18 / 7
Регистрация: 20.03.2012
Сообщений: 585
19.01.2016, 15:36  [ТС]
volvo, попробую поновее поставить...

Добавлено через 15 часов 19 минут
volvo, попробовал на другом компе, где стоит XE10 с Indy 10.6.2.5298. Результат тот же самый - событие OnWork не вызывается.

Добавлено через 51 секунду
Отправляю через mail.ru, письмо крохотное, но с вложением на 20 МБ.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33379 / 21503 / 8236
Регистрация: 22.10.2011
Сообщений: 36,899
Записей в блоге: 11
19.01.2016, 16:03
Не понимаю, что происходит. Смотри:



То есть, OnWork прекрасно работает, и показывает прогресс (отсылался файл 8Мб размером). И это все под XE2, с родной Indy (10.5.8.0). Что-то еще не так делаешь.
0
18 / 18 / 7
Регистрация: 20.03.2012
Сообщений: 585
19.01.2016, 16:21  [ТС]
Цитата Сообщение от volvo Посмотреть сообщение
Что-то еще не так делаешь.
Вот это мне и интересно... что может быть не так...
Сейчас экспериментирую с IdIMAP4. Почта прекрасно загружается. Там не работает не только OnWork, но и OnWorkBgin и OnWorkEnd. Работает только OnWorkBeginForPart.
0
20.01.2016, 18:58

Не по теме:

Цитата Сообщение от znseday Посмотреть сообщение
Сейчас экспериментирую с IdIMAP4. Почта прекрасно загружается.
маил ру не все команды IMAP поддерживает.
А так в XE3 вcе нормально отрабатывает, посему предположу что вы что-то не так делаете.

0
18 / 18 / 7
Регистрация: 20.03.2012
Сообщений: 585
20.01.2016, 20:09  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
маил ру не все команды IMAP поддерживает.
Ок, учту на будущее, спасибо. Все команды я и не пробовал.

Я на днях демо-примерчик соберу, сюда выложу...
0
20.01.2016, 20:19

Не по теме:

Цитата Сообщение от znseday Посмотреть сообщение
Я на днях демо-примерчик соберу, сюда выложу...
https://www.cyberforum.ru/blog... og513.html

0
18 / 18 / 7
Регистрация: 20.03.2012
Сообщений: 585
20.01.2016, 21:58  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
https://www.cyberforum.ru/blogs/131347/blog513.html
Видел уже, находил ранее.
Мне важно понять, что не так именно в моем примере.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.01.2016, 21:58
Помогаю со студенческими работами здесь

Еще раз про отправку почты
Что-то я уже совсем запутался с этими письмами... Просмотрел на тему РНР почты штук сто статей и примеров, в том числе и на этом сайте, так...

Запретить Отправку Почты На Имя (first Name) Пользователя
Всем привет. Столкнулся вот с неприятной ситуацией и грустно туплю - то ли так и должно быть, то ли надо чего-то подкрутить. Итак,...

Настройка почты на отправку через другой Лотусный сервер.
Есть два сервера (Server-1 и Server-2). Оба в одном домене (не в кластере), друг друга видят, реплицируются, передают Лотусную почту между...

Как настроить Zimbra на отправку почты за пределы локального домена?
Здравствуйте. Поднимаю первый в жизни почтовый сервер на Zimbra под Debian 6 Практика полезная, попутно частично заполнил пробелы в...

Как реализовать отправку файла с сервера по указанному посетителем адресу электронной почты?
Здравствуйте! Вопрос такой. Сайт на wordpress, тема от yootheme Имеется простейшая форма для отправки резюме на указанный в форме...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru