Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Сети > C++Builder Приём-передача SMS по SMTP протоколу. |
Автор: Control 30.12.2005, 00:27 |
Всем привет ! Люди, пожалуйсто помогите разобратьсяв следующем : Мне нужно написать программу, которая будит принимать отправляемые с оператора мобильной связи письма по SMTP протоколу, и после определённой обработки отправлять их ему обратно по тому-же каналу. Писать собираюсь на C++ Builder 6. Но если честно, я ещё ниразу не работал с сетью и почтой. И имею довольно поверхностные знания в этой сфере. По этому если вам не трудно, немогли-бы вы мне немного помочь разобраться с этим ![]() Принцип работы самого протокола примерно ясен, налажевается 2х сторонняя связь между клиентом и сервером, клиент подаёт запросы, сервер пассивно на них отвечает. Я видил комманды типо HELO... но это всё как-то слишком низкоуровнево. Ведь есть уже готовые компоненты вроде idSMTP в INDY можно ли его использовать для этой цели ? Если да, то как его использовать, и если не трудно кто-нибудь мог бы скинуть пример его использования и доккументацию на русском языке ? ![]() 1) И ещё один вопорс : Если я буду отправлять почту на сервер этого мобильного оператора, я ведь должен делать это с уже имеющегося где-то почтового адреса, который физически существует и доступен ? Или это может быть любой фиктивный адрес, который может не существовать вовсе ? 2) И принимать почту с сервера того оператора, я тем-более должен буду на существующий адрес ? Иначе, как- же я смогу её принять и обработать ? 3) Тогда получается, что мне нужно будит создать для этого свой, собственный почтовый сервер ? А как это зделать ? 4) Или я смогу производить все операции через любой "Почтовик" используя его как посредника ? Например если у меня есть ящик зарегестрированный на mail.ru, я смогу получать все письма от оператора на него и обрабатывать их своей программой ? А что если он переполнится, или скажем если на него будит в день приходить по 300-500 писем, мне же его закроют, или запретят приём писем с IP адреса оператора сочтя эти письма за SPAM. Подскажите пожалуйсто, как можно это всё организовать, и если не трудно, выложите пару примеров по 2х сторонней рассылке почты. За ранее благодарю ![]() С УВАЖЕНИЕМ Control |
Автор: Aleksandor 30.12.2005, 10:17 |
>Мне нужно написать программу, которая будит принимать отправляемые с оператора >мобильной связи письма по SMTP протоколу, и после определённой обработки отправлять их >ему обратно по тому-же каналу. Писать собираюсь на C++ Builder 6. А что, существуют такие операторы предоставляющие (бесплатный?) шлюз к электронной почте (SMS->email)? Или там обычный почтовый сервак стоит? Забирать письма ты можешь (по протоколу POP3) с сервера оператора, а чтобы отослать письма(по протоколу SMTP) нужен SMTP сервер - твоего провайдера или любой другой, но не на твоей машине. Кстати бывает что провайдеры в целях борьбы со спамом не разрешают пользоваться чужими SMTP серверами, только их собственным. |
Автор: Control 30.12.2005, 19:41 | ||
Да нет, в общем суть в следующем : Оператор мобильной связи выделяет мне платный фиксированный номер. Далее каким-то образом, обрабатывает все входящие на данный номер sms сообщения и отправляет их содержимое мне ( как они сказали ) по протоколу SMTP. Только вот куда ? Все технические данные мне ещё только предстаит от них получить. А может быть такое, что адресатом "приёмника" будит шлюз на ихнем же хосте ? То-есть они выделят мне какой-то адрес, на который их сервар будит сгружать все адресованные мне sms в виде почты, и дадут мне полный доступ к этому адресу. Следовательно отсылать письма на Их сервер, я буду с Их же клиента. Тогда получится, что весь транспорт данных будит осуществляться таким образом : [email protected] <--> [email protected] ? Я так понимаю, что у них там не просто "почтовик" стоит. Кто-нибудь знает, КАК ЭТО ВСЁ РАБОТАТЬ ДОЛЖНО ? Буду очень признателен, ежели кто вразумит. ![]() ![]() |
Автор: Aleksandor 30.12.2005, 21:00 |
Ну хорошо, значит шлюз они вам предоставили и будут отправлять sms на ваш почтовый ящик. Таким образом читать вы их будете по протоколу POP3 а отправлять обратно по SMTP. Получается обычный почтовый клиент, но с возможностью какой-то дополнительной обработки данных ![]() Еще вариант - поставить у себя сервер SMTP "на прием" и клиент SMTP "на передачу", но это если имеется статический IP адрес и постоянное подключение к инету. |
Автор: Control 3.1.2006, 18:59 | ||
![]() Ну к примеру, пусть это будит услуга по информированию клиента (отправителя sms на мой номер) о курсах валют, или прогнозе погоды на завтра. Соответственно если запрос на обе эти услуги будут поступать на однин и тот-же тел. номер (который я орендую у оператора), моя программа должна будит при получении письма определить что именно хочет знать отправитель, инфо по погоде или по валюте ? Для этого, придётся использовать "Ключевые слова" допустим на погоду пусть будит WTR_MOSKOW. Где WTR - тип запрашиваемой услуги, а MOSKOW город по которому необходимо предоставить отвечающую на услугу информацию. Тоже-самое будит и на валюту, к примеру такое содержание sms : CURR_USD,RUR,LVL... будит соответствовать типу услуги Currency Rate а USD,RUR,LVL типу валют по которым нужно возвратить информацию. Ну и соответственно нужно будит выдрать из поступившего письма номер отправителя, чтоб ответить на его запрос, и занести в базу, если он подписался на ежедневную рассылку к примеру. Aleksandor уважительная просьба, не могли бы Вы кинуть простенький пример по приёму-передаче писем между двумя адресатаи. По содержанию примерно токого рода : ввожу адрес почты, и программа постоянно следит о поступлении на него новых писем с другово известного адреса, как только с него пришло письмо, в Мемо автоматически вывести его содержимое. Или если не трудно, разъясните пожалуйсто, как это нужно организовать. ![]() ![]() С Уважением Control. |
Автор: Aleksandor 3.1.2006, 19:50 |
Мне кажется в Вашем случае, если есть возможность постоянного подключения к провайдеру и статический IP адрес (у нас в Москве это можно организовать в СТРИМ за $25/мес) то лучше написать серверную часть SMTP клиента, не полный SMTP сервер, а только код необходимый для приема сообщений от оператора. Вторая часть - это обычный почтовый клиент отсылающий письма на SMTP сервер оператора после обработки. Во втором случае (если используется внешний POP сервер) то все как в стандартной почтовой проге - пусть она соединяется с сервером каждые 1-2 минуты и забирает почту. Юзайте в Яндексе описание протоколов SMTP и POP3 - протоколы очень простые ![]() |
Автор: Control 3.1.2006, 20:57 | ||
А можно для этих целей использовать Indy компоненты C++ Builder 6 ? Но я видил в Delphi 7 - Indy SMTP Client и Indy SMTP Server, в то время, как в C++Builder 6 только один компонент idSMTP. Или он может выполнять функции и клиента и сервера ? Может есть где простенький, но наглядный пример ![]() ![]() |
Автор: Control 4.1.2006, 01:03 | ||||||
Вот, накидал ТАКОЙ код, использовал компоненты с закладок Indy : IdSMTP и IdMessage :
Но почему-то ничего не передаётся, долго думает, а потом выдаёт вот такое уведомление о произведённой ошибке :
и за ним
Указывал в хосте и mail.yahoo.com и smtp.yahoo.com всё равно одно и то-же происходит. Пожалуйсто помогите разобратья. ![]() |
Автор: Control 5.1.2006, 20:01 |
Ну, может кто сможет ответить на мой вопрос ? Если конечно не затруднит. |
Автор: L0n3R4ng3r 13.4.2006, 13:38 |
скорей всего поблема в следущем: На многих смтп серверах стоит защита от спама тоесть стоит аутенфикация по юзеру + иногда с помощью как-нибуть алгоритма шифрования, может стоит там копать. Наверное для таких целей действительно прийдеться ставит свой смтп сервер. |
Автор: КУБ 29.9.2006, 23:06 |
А что "IdMessage" есть такой компонент на вкладке? ![]() |
Автор: Alca 31.8.2009, 14:40 | ||||
Есть, вкладка Инди Добавлено через 2 минуты и 28 секунд
Логин и пароль может в Бэйз64 конвертнуть? |
Автор: mrbrooks 31.8.2009, 14:47 |
![]() ![]() |
Автор: Олег2005 31.8.2009, 16:48 |
Нда....... что, удалять? ![]() |
Автор: Alca 31.8.2009, 17:56 |
mrbrooks, дату провтыкал |