Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
29 / 19 / 10
Регистрация: 24.02.2015
Сообщений: 124

Отправка множества сообщений на mail.ru

19.08.2016, 10:02. Показов 816. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Посылатор сообщений через мыло.
В идеале - программа должны отправлять несколько писем подряд
Что есть
Код логина.(логинов несколько, но для примера подойдет и 1)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
 login[0]=Login1->Text;
      pas[0]=Password1->Text;
     smtp[0]=CheckSmtp(login[0]);//смпт в зависимости от логина(mail,inbox,bk,list)
      if ((Form1->IdSMTP1->Connected()==false) && (smtp[0]!="invalid"))
    {
    Form1->IdSMTP1->Host =smtp[0];//адрес СМТП сервака
    Form1->IdSMTP1->Username = login[0];//Логин
    Form1->IdSMTP1->Password = pas[0];//Пароль
    Form1->IdSMTP1->Port = 465;// порт SSL
    Form1->IdSMTP1->AuthType = satDefault;//с авторизацией
 
    Form1->IdSSLIOHandlerSocketOpenSSL1->MaxLineAction = maException;
    Form1->IdSSLIOHandlerSocketOpenSSL1->Destination = Form1->IdSMTP1->Host+":"+IntToStr(Form1->IdSMTP1->Port);
    Form1->IdSSLIOHandlerSocketOpenSSL1->Host = Form1->IdSMTP1->Host;
    Form1->IdSSLIOHandlerSocketOpenSSL1->Port = Form1->IdSMTP1->Port;
    Form1->IdSSLIOHandlerSocketOpenSSL1->DefaultPort=0;
    Form1->IdSSLIOHandlerSocketOpenSSL1->SSLOptions->Method=sslvTLSv1;
    Form1->IdSSLIOHandlerSocketOpenSSL1->SSLOptions->Mode=sslmUnassigned;
    Form1->IdSSLIOHandlerSocketOpenSSL1->SSLOptions->VerifyDepth = 0;
 
    Form1->IdSMTP1->IOHandler=Form1->IdSSLIOHandlerSocketOpenSSL1;
    Form1->IdSMTP1->UseTLS=utUseExplicitTLS;
    }
    try //коннект
    {
        try
        {
            if (Form1->IdSMTP1->Connected())
                Form1->IdSMTP1->Disconnect();
            Form1->IdSMTP1->ReadTimeout = 1500;
            Form1->IdSMTP1->Connect();
        status[0]=true;
        Shape1->Brush->Color=clGreen;
        }
        catch (Exception &exception)
        {
            Form1->IdSMTP1->Disconnect(); Shape1->Brush->Color=clRed;
            MessageDlg("Application, may not connected", mtError, TMsgDlgButtons() << mbYes, 0);
            Abort;
        }
        // My Code Here
    }
    catch (Exception &exception)
    {
        Application->ShowException(&exception);
        Form1->IdSMTP1->Disconnect();Shape1->Brush->Color=clRed;
    }
В этом куске кода всё отлично, всё логинится.
дальше функция которая выставляет на выбранном ТIdMessage настройки сообщения в зависимости от выбранного nlist выбирается соответствующее письмо(писем всего 5)
тут тоже всё нормально.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
void mail1(TIdMessage *mes1,int nlist)
{
switch(nlist)
{
case 1:
    mes1->Body->Assign(Form1->M1->Lines);//тут мы берем текст из Memo
    mes1->From->Text = login[0];//от кого письмо (если сервер не проверяет, можно левый адрес)
    mes1->ContentType = "text/plain";
    mes1->CharSet = "UTF-8";
    mes1->ContentTransferEncoding = "base64";
    mes1->Subject = Form1->Edit10->Text;//Заголовок письма
    mes1->Recipients->EMailAddresses = Form1->Edit9->Text;//Адрес получателя
    break;
case 2:
mes1->Body->Assign(Form1->M2->Lines);//тут мы берем текст из Memo
mes1->From->Text = login[1];//от кого письмо (если сервер не проверяет, можно левый адрес)
mes1->ContentType = "text/plain";
mes1->CharSet = "UTF-8";
mes1->ContentTransferEncoding = "base64";
mes1->Subject = Form1->Edit2->Text;//Заголовок письма
mes1->Recipients->EMailAddresses = Form1->Edit1->Text;//Адрес получателя
break;
case 3:
mes1->Body->Assign(Form1->M3->Lines);//тут мы берем текст из Memo
mes1->From->Text = login[2];//от кого письмо (если сервер не проверяет, можно левый адрес)
mes1->ContentType = "text/plain";
mes1->CharSet = "UTF-8";
mes1->ContentTransferEncoding = "base64";
mes1->Subject = Form1->Edit4->Text;//Заголовок письма
mes1->Recipients->EMailAddresses = Form1->Edit3->Text;//Адрес получателя
break;
case 4:
mes1->Body->Assign(Form1->M4->Lines);//тут мы берем текст из Memo
mes1->From->Text = login[3];//от кого письмо (если сервер не проверяет, можно левый адрес)
mes1->ContentType = "text/plain";
mes1->CharSet = "UTF-8";
mes1->ContentTransferEncoding = "base64";
mes1->Subject = Form1->Edit8->Text;//Заголовок письма
mes1->Recipients->EMailAddresses = Form1->Edit7->Text;//Адрес получателя
break;
case 5:
mes1->Body->Assign(Form1->M5->Lines);//тут мы берем текст из Memo
mes1->From->Text = login[4];//от кого письмо (если сервер не проверяет, можно левый адрес)
mes1->ContentType = "text/plain";
mes1->CharSet = "UTF-8";
mes1->ContentTransferEncoding = "base64";
mes1->Subject = Form1->Edit6->Text;//Заголовок письма
mes1->Recipients->EMailAddresses =Form1->Edit5->Text;//Адрес получателя
break;
}
}
Вот собственно отправка
mytime1 по умолчанию 0;
тут от 0 до 4 выбирается письмо, передается на idMessage1,
пробует отправить, включает таймер 2, на котором просто пауза в 2.5 секунды и идет дальше, запуская таймер1.
Первое письмо отправляется нормально, но вот все последующие - ошибка.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
Form1->Caption=(mytime1);
switch(mytime1)
{
case 0:
try
        {
           mail1(IdMessage1,mytime1+1);//выбираем нужный компонент и нужное письмо
            Form1->IdSMTP1->Send(Form1->IdMessage1);//отправка
        }
        catch (Exception &exception)
        {
            //MessageDlg("Application, may not connected", mtError, TMsgDlgButtons() << mbYes, 0);
            Abort;
        }
        Timer2->Enabled=true;//задержка 2.5 секунды
Timer1->Enabled=false;
break;
case 1:
try
        {     mail1(IdMessage1,mytime1+1);
            Form1->IdSMTP1->Send(Form1->IdMessage1);
        }
        catch (Exception &exception)
        {
            //MessageDlg("Application, may not connected", mtError, TMsgDlgButtons() << mbYes, 0);
            Abort;
        }
Timer2->Enabled=true;
Timer1->Enabled=false;
break;
 
 
case 2:
try
        {    mail1(IdMessage1,mytime1+1);
            Form1->IdSMTP1->Send(Form1->IdMessage1);
 
        }
        catch (Exception &exception)
        {
           //   MessageDlg("Application, may not connected", mtError, TMsgDlgButtons() << mbYes, 0);
            Abort;
        }Timer2->Enabled=true;
Timer1->Enabled=false;
break;
case 3:
try
        {   mail1(IdMessage1,mytime1+1);
            Form1->IdSMTP1->Send(Form1->IdMessage1);
 
        }
        catch (Exception &exception)
        {
            //MessageDlg("Application, may not connected", mtError, TMsgDlgButtons() << mbYes, 0);
            Abort;
        }Timer2->Enabled=true;
Timer1->Enabled=false;
break;
case 4:
try
        {     mail1(IdMessage1,mytime1+1);
            Form1->IdSMTP1->Send(Form1->IdMessage1);
 
        }
        catch (Exception &exception)
        {
            //MessageDlg("Application, may not connected", mtError, TMsgDlgButtons() << mbYes, 0);
            Abort;
        }Timer2->Enabled=true;
Timer1->Enabled=false;
 
break;
case 5:
Timer1->Enabled=false;
Form1->Caption=mytime1;
 
break;
} 
mytime1++;
}
Внимание вопрос, КАК сделать множественную отправку??
1
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.08.2016, 10:02
Ответы с готовыми решениями:

Отправка сообщений на e-mail
Здравствуйте! Мне необходимо отправить сообщение на почту. Нашел пример с компонентами IdSMTP1 и IdMessage1. Пример довольно короткий, но...

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

Отправка сообщений на e-mail
Здравствуйте! Хотел бы узнать можно ли через Microsoft Visual Basic 6.0 создать программу, для многократной или одиночной отправки...

6
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,145
Записей в блоге: 3
19.08.2016, 10:33
PS что значит множественную, это 10,20 500 писем за раз?. Все стандартные почтовые ящики имеют лимит отправки писем за определенное время.
К примеру майл ру, раньше разрешал максимум 50 писем в час...если Вы используете ящики на хостинге, то у каждого свои критерии, максимум чт встречал это 150 писем в час/
0
64 / 64 / 16
Регистрация: 07.05.2016
Сообщений: 304
19.08.2016, 12:33
KaiKristo, абсолютно верно ответили выше, посмотрите лимиты, я делал как то парсер емейлов и проверку на существование их, т.е отсылку письма и просмотр ответа, в день обрабатывалось порядка 20 000 писам, но программа отсылала и принимала письма с разных адресов и серверов... т.е вам по идее надо тупо зарегистрировать много адресов, сделать таймер и слать с них писем чуть меньше допустимого значения. в идеале еще и что бы все ящики были на разных серверах... ну или воспользоваться платным smtp или поставить свой)
0
29 / 19 / 10
Регистрация: 24.02.2015
Сообщений: 124
19.08.2016, 14:32  [ТС]
Ребят, просьба вчитаться в сообщение. тут по коду: я 5 разных сообщений с 1го мыла отправить не могу. с интервалом 2.5 секунды. Я в ручную, в браузере быстрее письма отправляю )
0
64 / 64 / 16
Регистрация: 07.05.2016
Сообщений: 304
19.08.2016, 14:47
KaiKristo,

C++
1
2
Timer2->Enabled=true;//задержка 2.5 секунды
Timer1->Enabled=false;
что по вашему выполняет это кусок кода?
задержка 2.5 секунды, ставите интервал у таймера 2500

если честно то вы написали какую то ересь, вы тестировали?

лично у меня пример попроще есть, без лишних конструций и нагромождений проверил все работат, ну правда на второй третий раз тупо мейл и яндекс не дает отправить много писам с малым промежутком...
0
29 / 19 / 10
Регистрация: 24.02.2015
Сообщений: 124
21.08.2016, 07:23  [ТС]
2.5 секунды интервал между отправками.
0
29 / 19 / 10
Регистрация: 24.02.2015
Сообщений: 124
22.08.2016, 12:56  [ТС]
Решил проблему
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.08.2016, 12:56
Помогаю со студенческими работами здесь

Отправка сообщений на e-mail
нужно оправить письмо на указанный ящик с данными взятыми из Textbox написал такой код: string from = email.Text; string...

Mail() отправка сообщений
мне нужно отправить сообщения на mail.ru, у меня есть два файла form.php - где я заношу всю информацию в форму, и mail.php - где я...

Не работает отправка сообщений (mail();)
У меня есть код, которые проверяет оплату и выдаёт товар. И после покупки отправляет письмо на почту с ссылкой на товар, но потом я...

Отправка сообщений из формы по e-mail
Привет всем!!! мне дали задание: Сделать HTML Страничку как отправления сообщения нуууу там имя эиэйл и сообщение!!!! Форму методом GET. и...

Отправка mail сообщений с вложением файлов
Чтобы отправлять сообщения о новом клиенте на почту, использую следующий код: 1) HTML &lt;input type = &quot;text&quot; class =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru