Модераторы: feodorv
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> C++Builder Приём-передача SMS по SMTP протоколу. Помогите написать программу. SMTP. 
:(
    Опции темы
Control
Дата 30.12.2005, 00:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 28.12.2005
Где: Рига, Латвия

Репутация: нет
Всего: нет



Всем привет ! Люди, пожалуйсто помогите разобратьсяв следующем :

Мне нужно написать программу, которая будит принимать отправляемые с оператора мобильной связи письма по SMTP протоколу, и после определённой обработки отправлять их ему обратно по тому-же каналу. Писать собираюсь на C++ Builder 6.

Но если честно, я ещё ниразу не работал с сетью и почтой. И имею довольно поверхностные знания в этой сфере.

По этому если вам не трудно, немогли-бы вы мне немного помочь разобраться с этим smile
Принцип работы самого протокола примерно ясен, налажевается 2х сторонняя связь между клиентом и сервером, клиент подаёт запросы, сервер пассивно на них отвечает. Я видил комманды типо HELO... но это всё как-то слишком низкоуровнево. Ведь есть уже готовые компоненты вроде idSMTP в INDY можно ли его использовать для этой цели ? Если да, то как его использовать, и если не трудно кто-нибудь мог бы скинуть пример его использования и доккументацию на русском языке ? smile

1) И ещё один вопорс : Если я буду отправлять почту на сервер этого мобильного оператора, я ведь должен делать это с уже имеющегося где-то почтового адреса, который физически существует и доступен ? Или это может быть любой фиктивный адрес, который может не существовать вовсе ?

2) И принимать почту с сервера того оператора, я тем-более должен буду на существующий адрес ? Иначе, как- же я смогу её принять и обработать ?

3) Тогда получается, что мне нужно будит создать для этого свой, собственный почтовый сервер ? А как это зделать ?

4) Или я смогу производить все операции через любой "Почтовик" используя его как посредника ? Например если у меня есть ящик зарегестрированный на mail.ru, я смогу получать все письма от оператора на него и обрабатывать их своей программой ? А что если он переполнится, или скажем если на него будит в день приходить по 300-500 писем, мне же его закроют, или запретят приём писем с IP адреса оператора сочтя эти письма за SPAM.

Подскажите пожалуйсто, как можно это всё организовать, и если не трудно, выложите пару примеров по 2х сторонней рассылке почты.



За ранее благодарю smile
С УВАЖЕНИЕМ
Control






PM MAIL   Вверх
Aleksandor
Дата 30.12.2005, 10:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Практик
**


Профиль
Группа: Участник
Сообщений: 272
Регистрация: 22.11.2005
Где: россия, зеленогра д

Репутация: нет
Всего: 12



>Мне нужно написать программу, которая будит принимать отправляемые с оператора >мобильной связи письма по SMTP протоколу, и после определённой обработки отправлять их >ему обратно по тому-же каналу. Писать собираюсь на C++ Builder 6.

А что, существуют такие операторы предоставляющие (бесплатный?) шлюз к электронной почте (SMS->email)? Или там обычный почтовый сервак стоит?

Забирать письма ты можешь (по протоколу POP3) с сервера оператора, а чтобы отослать письма(по протоколу SMTP) нужен SMTP сервер - твоего провайдера или любой другой, но не на твоей машине. Кстати бывает что провайдеры в целях борьбы со спамом не разрешают пользоваться чужими SMTP серверами, только их собственным.


--------------------
Call out Gouranga be happy!!!
Gouranga Gouranga Gouranga ....
That which brings the highest happiness!!
PM MAIL   Вверх
Control
Дата 30.12.2005, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 28.12.2005
Где: Рига, Латвия

Репутация: нет
Всего: нет



Цитата(Aleksandor @ 30.12.2005, 10:17)
А что, существуют такие операторы предоставляющие (бесплатный?) шлюз к электронной почте (SMS->email)? Или там обычный почтовый сервак стоит ?

Да нет, в общем суть в следующем :

Оператор мобильной связи выделяет мне платный фиксированный номер. Далее каким-то образом, обрабатывает все входящие на данный номер sms сообщения и отправляет их содержимое мне ( как они сказали ) по протоколу SMTP. Только вот куда ? Все технические данные мне ещё только предстаит от них получить.

А может быть такое, что адресатом "приёмника" будит шлюз на ихнем же хосте ? То-есть они выделят мне какой-то адрес, на который их сервар будит сгружать все адресованные мне sms в виде почты, и дадут мне полный доступ к этому адресу. Следовательно отсылать письма на Их сервер, я буду с Их же клиента. Тогда получится, что весь транспорт данных будит осуществляться таким образом :

[email protected] <--> [email protected] ?

Я так понимаю, что у них там не просто "почтовик" стоит.

Кто-нибудь знает, КАК ЭТО ВСЁ РАБОТАТЬ ДОЛЖНО ? Буду очень признателен, ежели кто вразумит. smile smile
PM MAIL   Вверх
Aleksandor
Дата 30.12.2005, 21:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Практик
**


Профиль
Группа: Участник
Сообщений: 272
Регистрация: 22.11.2005
Где: россия, зеленогра д

Репутация: нет
Всего: 12



Ну хорошо, значит шлюз они вам предоставили и будут отправлять sms на ваш почтовый ящик.
Таким образом читать вы их будете по протоколу POP3 а отправлять обратно по SMTP. Получается обычный почтовый клиент, но с возможностью какой-то дополнительной обработки данных smile Интересно какой, если не секрет?

Еще вариант - поставить у себя сервер SMTP "на прием" и клиент SMTP "на передачу", но это если имеется статический IP адрес и постоянное подключение к инету.

Это сообщение отредактировал(а) Aleksandor - 31.12.2005, 09:39


--------------------
Call out Gouranga be happy!!!
Gouranga Gouranga Gouranga ....
That which brings the highest happiness!!
PM MAIL   Вверх
Control
Дата 3.1.2006, 18:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 28.12.2005
Где: Рига, Латвия

Репутация: нет
Всего: нет



Цитата(Aleksandor @ 30.12.2005, 20:00)
Получается обычный почтовый клиент, но с возможностью какой-то дополнительной обработки данных smile  Интересно какой, если не секрет ?


smile

Ну к примеру, пусть это будит услуга по информированию клиента (отправителя sms на мой номер) о курсах валют, или прогнозе погоды на завтра. Соответственно если запрос на обе эти услуги будут поступать на однин и тот-же тел. номер (который я орендую у оператора), моя программа должна будит при получении письма определить что именно хочет знать отправитель, инфо по погоде или по валюте ? Для этого, придётся использовать "Ключевые слова" допустим на погоду пусть будит WTR_MOSKOW. Где WTR - тип запрашиваемой услуги, а MOSKOW город по которому необходимо предоставить отвечающую на услугу информацию. Тоже-самое будит и на валюту, к примеру такое содержание sms : CURR_USD,RUR,LVL... будит соответствовать типу услуги Currency Rate а USD,RUR,LVL типу валют по которым нужно возвратить информацию. Ну и соответственно нужно будит выдрать из поступившего письма номер отправителя, чтоб ответить на его запрос, и занести в базу, если он подписался на ежедневную рассылку к примеру.

Aleksandor уважительная просьба, не могли бы Вы кинуть простенький пример по приёму-передаче писем между двумя адресатаи. По содержанию примерно токого рода : ввожу адрес почты, и программа постоянно следит о поступлении на него новых писем с другово известного адреса, как только с него пришло письмо, в Мемо автоматически вывести его содержимое. Или если не трудно, разъясните пожалуйсто, как это нужно организовать. smile Но лучше конечно пример. smile

С Уважением Control.

Это сообщение отредактировал(а) Control - 3.1.2006, 19:01
PM MAIL   Вверх
Aleksandor
Дата 3.1.2006, 19:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Практик
**


Профиль
Группа: Участник
Сообщений: 272
Регистрация: 22.11.2005
Где: россия, зеленогра д

Репутация: нет
Всего: 12



Мне кажется в Вашем случае, если есть возможность постоянного подключения к провайдеру и статический IP адрес (у нас в Москве это можно организовать в СТРИМ за $25/мес) то лучше написать серверную часть SMTP клиента, не полный SMTP сервер, а только код необходимый для приема сообщений от оператора. Вторая часть - это обычный почтовый клиент отсылающий письма на SMTP сервер оператора после обработки.

Во втором случае (если используется внешний POP сервер) то все как в стандартной почтовой проге - пусть она соединяется с сервером каждые 1-2 минуты и забирает почту. Юзайте в Яндексе описание протоколов SMTP и POP3 - протоколы очень простые smile


--------------------
Call out Gouranga be happy!!!
Gouranga Gouranga Gouranga ....
That which brings the highest happiness!!
PM MAIL   Вверх
Control
Дата 3.1.2006, 20:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 28.12.2005
Где: Рига, Латвия

Репутация: нет
Всего: нет



Цитата(Aleksandor @ 3.1.2006, 18:50)
SMTP и POP3 - протоколы очень простые smile


А можно для этих целей использовать Indy компоненты C++ Builder 6 ? Но я видил в Delphi 7 - Indy SMTP Client и Indy SMTP Server, в то время, как в C++Builder 6 только один компонент idSMTP. Или он может выполнять функции и клиента и сервера ?

Может есть где простенький, но наглядный пример smile Я просто впервые работаю с сетью и протоколами smile

Это сообщение отредактировал(а) Control - 3.1.2006, 21:00
PM MAIL   Вверх
Control
Дата 4.1.2006, 01:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 28.12.2005
Где: Рига, Латвия

Репутация: нет
Всего: нет



Вот, накидал ТАКОЙ код, использовал компоненты с закладок Indy : IdSMTP и IdMessage :
Код

//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)
{
  IdMessage1->Body->Assign(Memo1->Lines);
  IdMessage1->From->Text = "[email protected]"; 
  IdMessage1->Subject  = "Mail From Control"; 
//IdMessage1->charset = "ISO-8859-1";
//IdMessage1->charset = "US-ASCII";
  IdMessage1->Recipients->EMailAddresses = "[email protected]"; 
  IdMessage1->Priority = TIdMessagePriority(mpHighest); 
  IdMessage1->CCList->EMailAddresses = "[email protected]";
// IdMessage1->BccList->EMailAddresses = ReadIni("smtp","FromAdress","Options.ini"); 

 IdSMTP1->Host = "mail.yahoo.com";
 IdSMTP1->UserId = "user";
 IdSMTP1->Password = "enigma";
 IdSMTP1->Port = 25;
 IdSMTP1->MailAgent = "Test TidSMTP"; 
 IdSMTP1->AuthenticationType = atLogin;
//idSMTP1.AuthenticationType := atNone;

try
   {
    try
       {
          if (IdSMTP1->Connected()) IdSMTP1->Disconnect(); 
              IdSMTP1->Connect(); 
              IdSMTP1->Send(IdMessage1);
       }
       catch (Exception &exception)
            {
             IdSMTP1->Disconnect();
             MessageDlg("Application, may not connected", mtError, TMsgDlgButtons() << mbYes, 0);
             Abort;
            }

             // My Code Here
    }
     catch (Exception &exception)
          {
           Application->ShowException(&exception);
           IdSMTP1->Disconnect();
          }
}
//---------------------------------------------------------------------------

Но почему-то ничего не передаётся, долго думает, а потом выдаёт вот такое уведомление о произведённой ошибке :
Цитата
Project Project1.exe raised exception class EIdSocketError with message 'Socket Error # 10060 Connection timed out.'

и за ним
Цитата
Project Project1.exe raised exception class EIdSocketError with message 'Socket Error # 10057 Connection timed out.'


Указывал в хосте и mail.yahoo.com и smtp.yahoo.com всё равно одно и то-же происходит. Пожалуйсто помогите разобратья. smile


PM MAIL   Вверх
Control
Дата 5.1.2006, 20:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 28.12.2005
Где: Рига, Латвия

Репутация: нет
Всего: нет



Ну, может кто сможет ответить на мой вопрос ? Если конечно не затруднит.
PM MAIL   Вверх
L0n3R4ng3r
Дата 13.4.2006, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 8.4.2006

Репутация: нет
Всего: нет



скорей всего поблема в следущем:
На многих смтп серверах стоит защита от спама тоесть стоит аутенфикация по юзеру + иногда с помощью как-нибуть алгоритма шифрования, может стоит там копать. Наверное для таких целей действительно прийдеться ставит свой смтп сервер.
PM MAIL   Вверх
КУБ
Дата 29.9.2006, 23:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 5.6.2006
Где: Украина, Донецк

Репутация: нет
Всего: нет



Цитата(Control @  4.1.2006,  01:03 Найти цитируемый пост)
использовал компоненты с закладок Indy : IdSMTP и IdMessage 


А что "IdMessage" есть такой компонент на вкладке? smile  Что то ненайду
PM MAIL   Вверх
Alca
Дата 31.8.2009, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 1
Всего: 50



Цитата

А что "IdMessage" есть такой компонент на вкладке?   Что то ненайду

Есть, вкладка Инди

Добавлено через 2 минуты и 28 секунд
Код

 IdSMTP1->UserId = "user";
 IdSMTP1->Password = "enigma"; 

Логин и пароль может в Бэйз64 конвертнуть?





--------------------
PM WWW ICQ Skype Jabber   Вверх
mrbrooks
Дата 31.8.2009, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: нет
Всего: 306



 smile 
smile Alca, на некро потянуло?
PM MAIL   Вверх
Олег2005
  Дата 31.8.2009, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 421
Регистрация: 26.5.2005
Где: Рига Латвия

Репутация: 6
Всего: 11



Нда.......
что, удалять? smile 
PM MAIL WWW MSN   Вверх
Alca
Дата 31.8.2009, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 1
Всего: 50



mrbrooks, дату провтыкал


--------------------
PM WWW ICQ Skype Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.1274 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.