Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
26 / 17 / 9
Регистрация: 24.02.2015
Сообщений: 124
1

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

19.08.2016, 10:02. Показов 557. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.08.2016, 10:02
Ответы с готовыми решениями:

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

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

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

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

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

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

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

лично у меня пример попроще есть, без лишних конструций и нагромождений проверил все работат, ну правда на второй третий раз тупо мейл и яндекс не дает отправить много писам с малым промежутком...
0
26 / 17 / 9
Регистрация: 24.02.2015
Сообщений: 124
21.08.2016, 07:23  [ТС] 6
2.5 секунды интервал между отправками.
0
26 / 17 / 9
Регистрация: 24.02.2015
Сообщений: 124
22.08.2016, 12:56  [ТС] 7
Решил проблему
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.08.2016, 12:56

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru