Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.12.24;
Скачать: CL | DM;

Вниз

idsmtp отправка письма   Найти похожие ветки 

 
Алексей Филонович   (2006-12-07 12:59) [0]

Есть листбокс,там список е-мэйл адресов сотрудников нашей компинии,
внутри своя сеть и у каждого есть свой внутрисетевой е-мэйл

суть в том чтобы вовремя оповещать всех о каких то изменениях,для этого было решено сделать рассылку по ящикам.
У меня возникли проблемы,помогите решить.

привожу сделанный код:
button1.onclick;
var
i:integer;
begin
Messages.Body.Add(memo1.Text);
Messages.From.Text := "secr@home.net";
Messages.Subject := edit1.Text;
Messages.contentType:= "text/plain";
Messages.CharSet:= "Windows-1251";
IdSMTP1.Port:=25;
IdSMTP1.Host := "home.net";
IdSMTP1.AuthenticationType := atLogin;
IdSMTP1.UserId := "...";
IdSMTP1.Password := "...";
while listbox1.Items.Count>i do
Messages.Recipients.EMailAddresses :=listbox1.Items.Strings[i];
IdSMTP1.Connect();
If IdSMTP1.Connected then
Begin
IdSMTP1.Send(Messages);
End;
IdSMTP1.Disconnect;

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


 
Max Zyuzin ©   (2006-12-07 13:52) [1]

>Алексей Филонович   (07.12.06 12:59)
i := 0;
while listbox1.Items.Count>i do
begin
Messages.Recipients.EMailAddresses :=listbox1.Items.Strings[i];
IdSMTP1.Connect();
If IdSMTP1.Connected then IdSMTP1.Send(Messages);
IdSMTP1.Disconnect;
inc(i);
End;


 
Max Zyuzin ©   (2006-12-07 13:55) [2]

Возможно не нужно коннектится каждый раз... перед отправкой. очередного письма.

А вообще проще создать группу на самом сервере и рассылать группе. Программы вообще не понадобится


 
Рамиль ©   (2006-12-07 14:15) [3]


> внутри своя сеть и у каждого есть свой внутрисетевой е-мэйл

А зачем решать задачу через одно место? Варианты
1. Создать группу рассылки в почтовом клиенте.
2. Создать группу рассылки на сервере.


 
iXT   (2006-12-07 14:20) [4]


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

Не верно - На сервер уйдет одно сообщение! Никаких тут циклов нет!


 
iXT   (2006-12-07 15:35) [5]

Пардон, вообще ничего не уйдет.

2 Max Zyuzin ©   (07.12.06 13:52) [1] [2]
 Вы уверены в рациональности этого?

Я бы предложил:
Message.Clear; (не видно откуда оно берется)
for i :=0 to Listbox.Item.Count - 1 do
 Message.Recipients.Add(...


 
Max Zyuzin ©   (2006-12-07 16:19) [6]

>iXT   (07.12.06 15:35) [5]
Нет не уверен, по этому я в том посте 2-й абзац и написал


 
iXT   (2006-12-07 16:32) [7]


> Возможно не нужно коннектится каждый раз... перед отправкой.
>  очередного письма.


Этого тоже касается!


> А вообще проще создать группу на самом сервере и рассылать
> группе. Программы вообще не понадобится

Это я не рассматривал! Вернее не считаю. Это уже не Delphi

P.S.
 Давайте возможность автору самому найти свои ошибки, хоня ИМХО.


 
Max Zyuzin ©   (2006-12-08 08:50) [8]

>iXT   (07.12.06 16:32) [7]
>Это я не рассматривал! Вернее не считаю. Это уже не Delphi
Это не дельфи, согласен, зато эффективнее значительно :)


 
Алексей Филонович   (2006-12-08 16:25) [9]

нашел,разобрался
подскажите только куда вставить прогрессбар чтобы он показывал процесс отправки писем?
Заранее благодарю.
А.Ф.


 
Anatoly Podgoretsky ©   (2006-12-08 16:32) [10]

> Алексей Филонович  (08.12.2006 16:25:09)  [9]

На форму


 
iXT   (2006-12-08 16:32) [11]


> Алексей Филонович   (08.12.06 16:25) [9]

Зачем???

повторяю, достаточно одного письма со списком получателей!

А TProgressBar Ставится на форму (или др. некоторые визуальные компоненты).


 
Алексей Филонович   (2006-12-08 16:39) [12]

достаточно,но у меня так:
for i := 0 to flatlistbox1.Items.Count-1 do
begin
 Messages.Recipients.EMailAddresses :=flatlistbox1.Items.Strings[i];
 IdSMTP1.Connect();
  If IdSMTP1.Connected then  IdSMTP1.Send(Messages);
IdSMTP1.Disconnect;

работает нормально,только интересно что быстрей работает,как у меня или предложенный вами вариант?

насчет прогрессбара я про код,куда в этих строчках вставить его


 
iXT   (2006-12-08 16:53) [13]


> достаточно,но у меня так:


А почему?
> for i := 0 to flatlistbox1.Items.Count-1 do
> begin
>  Messages.Recipients.EMailAddresses :=flatlistbox1.Items.
> Strings[i];
>  IdSMTP1.Connect();

Если SMTP сервер один, то зачем каждый раз к нему присоединяться?

> работает нормально,только интересно что быстрей работает,
> как у меня или предложенный вами вариант?

К гадалке не ходи :)

> насчет прогрессбара я про код,куда в этих строчках вставить
> его

Очевидно что после отправки сообщения


 
Max Zyuzin ©   (2006-12-08 16:53) [14]

>Алексей Филонович   (08.12.06 16:39) [12]
Предложеный нами вариант работает значительно быстрее... прямо пропорционально количеству адресатов :)


 
Anatoly Podgoretsky ©   (2006-12-08 16:55) [15]

> Алексей Филонович  (08.12.2006 16:39:12)  [12]

Быстрее всего работает список рассылки на сервере, потом список на клиенте и хуже всего рассылка по списку.


 
Anatoly Podgoretsky ©   (2006-12-08 16:56) [16]

> iXT  (08.12.2006 16:53:13)  [13]

> Очевидно что после отправки сообщения

А можно до, зависит от психологии, главное внутри цикла.


 
iXT   (2006-12-08 16:58) [17]


> Anatoly Podgoretsky ©   (08.12.06 16:55) [15]

Ну ему же придется тогда и сервер изучать :) Тут предлагали, даже не отреагировал.


 
Алексей Филонович   (2006-12-08 17:04) [18]

Быстрее всего работает список рассылки на сервере

Спасибо.Работает значительно быстрее!!!


 
Anatoly Podgoretsky ©   (2006-12-08 18:54) [19]

> iXT  (08.12.2006 16:58:17)  [17]

Чего изучать, как в отдельной строчке ввести емайл?
Неужели это не подъемно?



Страницы: 1 вся ветка

Текущий архив: 2006.12.24;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.057 c
2-1165393606
Roman_ln
2006-12-06 11:26
2006.12.24
как вставить картинку с диска в форму


2-1165144849
Utyf
2006-12-03 14:20
2006.12.24
Работа со StringGrid


15-1164878438
TUser
2006-11-30 12:20
2006.12.24
Проблема с инсталлятором


15-1161853040
Наиль
2006-10-26 12:57
2006.12.24
DMClient


11-1130485465
nester
2005-10-28 11:44
2006.12.24
Как в EditBox заменить символ для ввода пароля?