![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() Доброго времени суток!
![]() И сново нужна помощь в организации отправки письма всем пользователям чьи адреса есть в базе одновременно. Ни разу с этим не сталкивался, но мое видение решения этой проблемы такое: -нужно из поля "e-mail" как то подставлять адреса скрипту отправки. Т.Е. берем поле "e-mail" , из него вытаскиваем 1ю строку с адресом и подставляем ее скрипту отправки. Далее берем 2ю строку и подставляем скрипту отправки и т.д. Вот может что то типа этого? или сохранять в текстовый файл и его потом подставлять? |
#2
|
|||
|
|||
![]() Берешь TIdSMTP и в письме указываешь все адреса а поле To.
Хотя если адресов реально много, то лучше все-таки разбить на несколько писем... |
#3
|
|||
|
|||
![]() Это понятно что вставляешь все адреса, а нужно чтоб программно все вставлялось как вот это организовать?
И нашел исходник как отправить простое письмо сдесь на сайте и все работало вчера а сегодня запускаю не работает пишет что нужна аутентификация хотя все параметры такие же как и вчера , в чем зе может быть проблема? |
#4
|
||||
|
||||
![]() Вы покажите код, как вы отправку делаете. Пока только ваши впечатления, а этого согласитесь - маловато.
Я писал почтового робота на компонентах TIdSMTP. Отлично работает уже 2 года. Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#5
|
|||
|
|||
![]() Вот код отправки:
Код:
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
|
||||
|
||||
![]() Вы под 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. |