![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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. |