Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 19.03.2009, 23:22
joomler joomler вне форума
Новичок
 
Регистрация: 11.10.2008
Сообщения: 88
Репутация: 10
По умолчанию Как отправить письмо сразу нескольким пользователям из базы данных?

Доброго времени суток!

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

Ни разу с этим не сталкивался, но мое видение решения этой проблемы такое:
-нужно из поля "e-mail" как то подставлять адреса скрипту отправки. Т.Е. берем поле "e-mail" , из него вытаскиваем 1ю строку с адресом и подставляем ее скрипту отправки. Далее берем 2ю строку и подставляем скрипту отправки и т.д.

Вот может что то типа этого? или сохранять в текстовый файл и его потом подставлять?
Ответить с цитированием
  #2  
Старый 20.03.2009, 00:33
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Берешь TIdSMTP и в письме указываешь все адреса а поле To.
Хотя если адресов реально много, то лучше все-таки разбить на несколько писем...
Ответить с цитированием
  #3  
Старый 20.03.2009, 00:56
joomler joomler вне форума
Новичок
 
Регистрация: 11.10.2008
Сообщения: 88
Репутация: 10
По умолчанию

Это понятно что вставляешь все адреса, а нужно чтоб программно все вставлялось как вот это организовать?
И нашел исходник как отправить простое письмо сдесь на сайте и все работало вчера а сегодня запускаю не работает пишет что нужна аутентификация хотя все параметры такие же как и вчера , в чем зе может быть проблема?
Ответить с цитированием
  #4  
Старый 21.03.2009, 11:34
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Вы покажите код, как вы отправку делаете. Пока только ваши впечатления, а этого согласитесь - маловато.
Я писал почтового робота на компонентах TIdSMTP. Отлично работает уже 2 года.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #5  
Старый 21.03.2009, 11:45
joomler joomler вне форума
Новичок
 
Регистрация: 11.10.2008
Сообщения: 88
Репутация: 10
По умолчанию

Вот код отправки:
Код:
begin
   IdSMTP1.Host:='smtp.mail.ru'; // сервер исходящей почты (SMTP)
   IdSMTP1.Port:=25;    // порт SMTP сервера
   IdSMTP1.Username:='test@mail.ru';  // ваш логин
   IdSMTP1.Password:='test';     // ваш пароль
   IdSMTP1.Authenticate;
       with IdMessage1 do
               begin
               Body.Assign(Memo1.Lines);    // текст письма
               From.Text := 'test@mail.ru'; //  ваш e-mail адрес
               Recipients.EMailAddresses := 'test@list.ru';     // адрес получателя
               Subject := 'test';  // тема сообщения
               end;

IdSMTP1.Connect;
       try
         showmessage('Conneted');
         IdSMTP1.Send(IdMessage1);
       finally
         IdSMTP1.Disconnect;
       end;
end;
Ответить с цитированием
  #6  
Старый 21.03.2009, 12:06
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Вы под D7 пишите? Я уже давно переписал все под D2007, а там эти библиотеки несколько изменились. Насколько я помню, одним из подводных камешков я вилось, то что необходимо проверять наличие коннекта, независимо то того 1 раз вы подключаетесь или 10, и в случае неудачи первой попытки делать это вторично.
у меня это реализовано так:
Код:
TryCount := 0; //Организуем цикл с нужным количеством попыток отправки в моем случае 3
    repeat
     try
      if not SMTP.Connected then SMTP.Connect; // Проверяем имеющееся подключение и если его нет подключаем
      SMTP.Send(Mail); // Отсылаем сообщение
      Mail.Clear; // В новой версии библиотек TIdMessage оформлено как отдельный контрол. У меня Mail: TIdMessage
      SMTP.Disconnect; // Отключаем соединение по ненадобности.
      Break; // поскольку все прошло удачно, выходим из цикла
     except // неудача соединения
      LogMessage('Ошибка подключения к SMTP-серверу. Повтор через 5 сек.', mtError); //Это моя процедура для регистрации событий в журнале
      StartTime := GetTickCount;  //Организуем цикл ожидания
      repeat
       Application.ProcessMessages; // Что-бы приложение не "замерзло"  в процессе ожидания
      until GetTickCount - StartTime > 5 * OneSec; // Собственно ждем 5 секунд
     end;
     Inc(TryCount); 
    until TryCount = 3; //Если количество попыток отправки больше 3 прекращаем попытки.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.

Последний раз редактировалось Страдалецъ, 21.03.2009 в 12:41.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 03:34.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025