Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.03.2013, 14:25   #1
Denis3
Пользователь
 
Регистрация: 15.03.2013
Сообщений: 17
По умолчанию Массовая рассылка писем

Добрый день,

Подскажите пожалуйста как отослать письма многим людям?

У меня есть на форме ComboBox, а так же на другой форме таблица с данными, мне надо сделать так, чтобы при совпадении значения из ComboBox и таблицы на другой форме, он отправлял письма

Вот код
Код:
procedure TForm8.Button1Click(Sender: TObject);
var i:Integer;
begin
  IdSMTP1.Port:=25;
  IdSMTP1.Host:='smtp.mail.ru';
  IdSMTP1.Connect(5000);
  IdSMTP1.AuthenticationType:=atLogin;
  IdSMTP1.Username:='username';
  IdSMTP1.Password:='password';
  if IdSMTP1.Connected=true then
    begin
      ShowMessage('connected');
      IdMessage1.Clear;
      IdMessage1.Subject:=ComboBox1.Text;
        for i:=1 to Polu4atelj.Table1.RecordCount do
          begin
            Polu4atelj.Table1.RecNo:=i;
            if ComboBox2.Text=Polu4atelj.Table1.FieldValues['Name_polu4atelj'] then
      IdMessage1.Recipients.EMailAddresses:=Polu4atelj.Table1.FieldValues['Email_name']; //то есть сюда должны попадать те значения кого совпали из ComboBox и таблицы
          end;
      IdMessage1.From.Address:='mail@mail.ru';
      IdMessage1.Body.Text:=Memo1.Text;
      IdMessage1.From.Name:='Mail';
      IdSMTP1.Send(IdMessage1);
    end;
  IdSMTP1.Disconnect;
end;
Он успешно отправляет письмо, НО проблема в том, что он отправляет только первому кто совпал (он проверил значение в столбце и ComboBox-а и отправляет только первому), а последующим не отправляет, то есть он про них забывает и останавливает отсылку.

Я понимаю, что вот эту часть надо запихнуть куда то в другое место, но куда не знаю
Код:
for i:=1 to Polu4atelj.Table1.RecordCount do
          begin
            Polu4atelj.Table1.RecNo:=i;
            if ComboBox2.Text=Polu4atelj.Table1.FieldValues['Name_polu4atelj'] then
      IdMessage1.Recipients.EMailAddresses:=Polu4atelj.Table1.FieldValues['Email_name'];
Буду очень благодарен если поможете.

И ещё вопрос, знаю не по теме, но кто нибудь может подсказать как соединить две формы в одну при перемещении, то есть есть две формы их друг к другу приблизить, и когда двигать одну двигается и вторая (как одна).

Последний раз редактировалось Stilet; 30.03.2013 в 15:41.
Denis3 вне форума Ответить с цитированием
Старый 30.03.2013, 14:43   #2
megostudent
Форумчанин
 
Регистрация: 31.12.2010
Сообщений: 320
По умолчанию

Код:
for i:=1 to Polu4atelj.Table1.RecordCount-1 do
попробуй
megostudent вне форума Ответить с цитированием
Старый 30.03.2013, 14:54   #3
Denis3
Пользователь
 
Регистрация: 15.03.2013
Сообщений: 17
По умолчанию

тоже отправляет только первому
Denis3 вне форума Ответить с цитированием
Старый 30.03.2013, 15:33   #4
megostudent
Форумчанин
 
Регистрация: 31.12.2010
Сообщений: 320
По умолчанию

Код:
ComboBox2.Text=Polu4atelj.Table1.FieldValues['Name_polu4atelj']
текст комбобокса сравнивается с полями твоей таблицы, соответственно только первое поле совпадает.
combobox1.ItemIndex:=№ елемента ты будешь сравнивать с полями таблицы тогда уже чтот будет,
суть понял думаю? над ставнивать именно строки, а не весь текст, строки как отдельные елементы, текст как 1 елем

Последний раз редактировалось megostudent; 30.03.2013 в 15:42.
megostudent вне форума Ответить с цитированием
Старый 30.03.2013, 16:07   #5
Denis3
Пользователь
 
Регистрация: 15.03.2013
Сообщений: 17
По умолчанию

К сожалению я ничего не понял что вы написали выше.

Вообщем идея такая

У меня в таблице 2 столбца

1) Группа
2) эмайл получателя

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

А причём тут ItemIndex я вообще не понимаю, я не по индексу сравниваю, а по названию группы.
Denis3 вне форума Ответить с цитированием
Старый 01.04.2013, 22:32   #6
Denis3
Пользователь
 
Регистрация: 15.03.2013
Сообщений: 17
По умолчанию

Проблему решил

procedure TForm8.Button1Click(Sender: TObject);
var i:Integer;
begin
IdSMTP1.Port:=25;
IdSMTP1.Host:='smtp.mail.ru';
IdSMTP1.Connect(5000);
IdSMTP1.AuthenticationType:=atLogin ;
IdSMTP1.Username:='username';
IdSMTP1.Password:='password';
if IdSMTP1.Connected=true then
for i:=0 to Polu4atelj.Table1.RecordCount -1 do
begin
IdMessage1.Clear;
IdMessage1.Subject:=ComboBox1.Text;
IdMessage1.Recipients.EMailAddresse s:=Polu4atelj.Table1.FieldValues['Email_name'];
IdMessage1.From.Address:='mail@mail .ru';
IdMessage1.Body.Text:=Memo1.Text;
IdMessage1.From.Name:='Mail';
Polu4atelj.Table1.RecNo:=i;
if ComboBox2.Text=Polu4atelj.Table1.Fi eldValues['Name_polu4atelj'] then
IdSMTP1.Send(IdMessage1);
end;
IdSMTP1.Disconnect;
end;
Denis3 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Массовая email рассылка. Selectra Помощь студентам 2 12.07.2011 14:33
массовая рассылка RUSlan48 Работа с сетью в Delphi 2 24.03.2011 23:10