![]() |
|
Модераторы: Snowy, Poseidon, MetalFan |
![]()
|
|
| Anarhist |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 89 Регистрация: 11.2.2006 Репутация: нет Всего: нет |
Хочу что API приложение отплавляло определенное сообщение на почту, ну и поняно что это нужно сделать без ведома пользователя, т. е. без вызова почтовой программы и каких либо заметных дейчтвий. Сколько не искал везде предлагаются способы с использование компонентов. А как без них??? Я не силен в сетевой практике, поэтому желательно как можно проще, и с исходниками
Заранее спасибо! |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 53 Всего: 484 |
Проще, но без компонентов и не через почтовик...
Ну это просто несовместимые вещи. Да ещё и без ведома пользователя. А, если ещё и за прокси, то никаких простых вариантов, кроме почтовика просто нет. А, если ещё и файрвол, то никак не без ведома. Самый простой и эффективный вариант - это через WinInet делать http запрос на заранее заготовленную в инете страницу, которая будет складывать куда-нить полученные данные. Но это не почта, если только на хосте не разрешён SMTP - тогда скрипт на странице уже и будет отправлять. Можно конечно понадеяться, что у юзер не за прокси, что файрвола у него нет и открыт 25-й порт на бесплатные почтовики. Вероятность такого процентов 20-25. Но на сокетах писать ты не умеешь, RFC не знаешь. Для таких случаев и сделаны компоненты. |
|||
|
||||
| Anarhist |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 89 Регистрация: 11.2.2006 Репутация: нет Всего: нет |
Конечно можно сделать и через компоненты, но тогда мне придется скрыть окно, все это будет грузить систему, хоть и очень малое время, программа должна просто считать IP, кинуть его на мыло и закрытся... Вот нашел код
Какой компонент нужно использовать, а то у меня вылетает немеренное количество ошибок! |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 53 Всего: 484 |
||||
|
||||
| Anarhist |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 89 Регистрация: 11.2.2006 Репутация: нет Всего: нет |
Ок, разобрался, а как узнать Ip smtp сервера? Того самого Mail.ru?
Это сообщение отредактировал(а) Anarhist - 12.10.2006, 01:29 |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 53 Всего: 484 |
Банальный ответ - ручками прописать.
http://forum.vingrad.ru/index.php?showtopi...st&p=629060 Это стандартный модуль. Его не может не быть. Добавлено @ 01:34 Для начала нужно узнать адрес этого сервера. Узнать его IP - GetHostByName. http://forum.vingrad.ru/index.php?showtopi...23&view=all А это вряд ли. mail.ru не захочет принимать от тебя почту. Там всё антиспамерской защитой облеплено. |
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 5 Всего: 158 |
||||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 53 Всего: 484 |
То же самое, что и здесь: http://forum.vingrad.ru/index.php?showtopic=81019
|
|||
|
||||
| Anarhist |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 89 Регистрация: 11.2.2006 Репутация: нет Всего: нет |
Та же истори, ничего не происходит...
Добавлено @ 01:57 Попробовал код с последнего поста, говорит что ошибка, может быть это из-за того что у меня выделенка, прокси все таки... |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 53 Всего: 484 |
Anarhist, читай второй пост ещё раз.
Ясен перец из-за прокси. |
|||
|
||||
| Anarhist |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 89 Регистрация: 11.2.2006 Репутация: нет Всего: нет |
Нет, ну и что же это получается, если у человека вделенка то письмо не отошлется?
|
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 53 Всего: 484 |
Не, если выделенка, а если прокси.
Выделенка может быть и с прямой маршрутизацией. Но при маршрутизации могут быть закрыты почтовые порты. А могут быть не закрыты. Поэтому отправка почты делается через внутренний почтовый сервер. Но тут тоже килограм вопросов. - сервер может не работать через SMTP. - если работает через SMTP, то не факт, что он прописан в DNS - его нужно узнавать у админа - если прописан в DNS, то нужно знать внутренний домен Почтовый вопрос просто ооооооооооочень неоднозначный. Поэтому гарантированно отправит только почтовая программа. И то, только, если у юзера она есть и настроена. Либо спросить настройки почты у юзера. Но он не всегда их знает. Да это уже и не скрыто. Если у юзера аутлук, то можно по тихому отправить через него. Но аутлук - дырявая тормозная платная кака и большинство им не пользуются. А тот же bat втихую отправлять не станет. |
|||
|
||||
| Dasha |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 18.10.2006 Репутация: нет Всего: нет |
Помогите пожалуйста прикрутить сюда авторизацию для отправки почты на mail.ru
|
|||
|
||||
| Matematik |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1027 Регистрация: 11.3.2006 Репутация: 24 Всего: 50 |
Dasha
Извени, но код [censored33! Пожалуйста, соблюдайте элементарные правила приличия при общении на форуме]. Кто будет проверять ответы сервера? Кто будет проверять результаты выполнения API функций? В Mys отправлят по 1 байту, ахтунг
После соединения отправляешь 'AUTH LOGIN', получаешь 334 отправляешь логин в Base64, получаешь 334 отправляешь пароль в Base64, получаешь 335
ЗЫ код не проверял, писал без delphi Это сообщение отредактировал(а) Matematik - 18.10.2006, 15:34 |
||||
|
|||||
| Dasha |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 18.10.2006 Репутация: нет Всего: нет |
Я только начинаю изучать Дельфи, поэтому во всем ни в зуб ногой
Помогите доработать код если он "г"
Никаких ошибок не выскакивает но письмо не приходит |
|||
|
||||
| Matematik |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1027 Регистрация: 11.3.2006 Репутация: 24 Всего: 50 |
Код дурацкий но зато работает
|
|||
|
||||
| Dasha |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 18.10.2006 Репутация: нет Всего: нет |
А по мне так самое оно! Спасибо
А почему дурацкий? |
|||
|
||||
| Matematik |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1027 Регистрация: 11.3.2006 Репутация: 24 Всего: 50 |
||||
|
||||
| Dmitry_177 |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 22.9.2006 Репутация: нет Всего: нет |
А почему мне приходят какие-то каракули(в Memo отображаю диалог с сервером)?
В Memo:
функция recv почему-то равна -1 |
||||
|
|||||
| Matematik |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1027 Регистрация: 11.3.2006 Репутация: 24 Всего: 50 |
анализируй что возвращает recv Попробуй справку почитать. SMTPSendString- изврат
Это сообщение отредактировал(а) Matematik - 27.10.2006, 12:50 |
||||
|
|||||
| Dmitry_177 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 22.9.2006 Репутация: нет Всего: нет |
Спасибо за код функции SMTPSendString, вы очень добры..
Пробовал читать справку... Не пойму никак почему каракули какие-то приходят... Должно же быть число и через пробел текст... |
|||
|
||||
| Dmitry_177 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 22.9.2006 Репутация: нет Всего: нет |
Пробовал эту функцию
так вообще ничего не приходит... |
|||
|
||||
| Matematik |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1027 Регистрация: 11.3.2006 Репутация: 24 Всего: 50 |
||||
|
||||
| Dmitry_177 |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 22.9.2006 Репутация: нет Всего: нет |
с сервера не приходило ничего... я переделал немного, и так вроде заработало
было так:
а переделал так:
|
||||
|
|||||
| Dmitry_177 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 22.9.2006 Репутация: нет Всего: нет |
А как можно "подождать" ответ от сервера? Тут везде в примерах после отправки Send идет сразу прием Recv, а вдруг сервер не успеет отправить информацию? Мне кажется тогда зависнет программа в ожидании ответа от сервера... как можно с этим справиться?
|
|||
|
||||
| drkot |
|
|||
![]() Ищущий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1042 Регистрация: 5.5.2006 Репутация: 0 Всего: 8 |
-------------------- Ошибка не становится истиной по причине широкого распространения, как и Истина не становится Ошибкой из-за того, что никто её не видит. |
|||
|
||||
| Matematik |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1027 Регистрация: 11.3.2006 Репутация: 24 Всего: 50 |
Читай данные из сокета в цикле в глобальный буфер пока не встретишь управляющие символы
|
|||
|
||||
| Dmitry_177 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 22.9.2006 Репутация: нет Всего: нет |
Я разобрался в чем у меня была проблема... Я после посылки серверу "DATA", начала письма, слал "From", "To", "Sabject", так вот я после посылки каждого сообщения всегда делал recv, оказывается ненадо этого делать, т.к. сервер ждет конца письма (#13#10+'.'+#13#10). Все работает ))) Всем спасибо за помощь... Если не трудно, подскажите пожалуйста как к письму прицепить аттачмент? Как прикрепить файл к письму который лежит в c:\file.txt пробовал что-то вроде этого но так не работает, я наверно что-то не так делаю... Подскажите пожалуйста, в интернете искал информацию по этому поводу но там очень мало ее и ничего не понятно... Много примеров с использованием MAPI но это не то...
|
|||
|
||||
| Dmitry_177 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 22.9.2006 Репутация: нет Всего: нет |
Читал я... но как послать файл не пойму никак, толи в Base64 надо слать толи еще как, не понятно, если в Base64 то как в него файл перевести и отправить? Правильно ли я задаю параметр boundary? Шлю письмо я так:
|
|||
|
||||
| Dmitry_177 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 22.9.2006 Репутация: нет Всего: нет |
Подскажите пожалуйста что не так? Файл присылается, но занимает 0 байт. Помогите...
Добавлено @ 13:51 и так пробовал, тоже самое... ReadFile(hFile, Str[1], GetFileSize(hFile, nil), BytesRead, nil); |
|||
|
||||
| Matematik |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1027 Регистрация: 11.3.2006 Репутация: 24 Всего: 50 |
Между заголовком и телом должна быть пустая строка.
Файлы обычно шифруются BASE64. |
|||
|
||||
| Dmitry_177 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 22.9.2006 Репутация: нет Всего: нет |
Есть там пустая строка и шифрую в Base64
|
|||
|
||||
| Matematik |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1027 Регистрация: 11.3.2006 Репутация: 24 Всего: 50 |
||||
|
||||
| Dmitry_177 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 22.9.2006 Репутация: нет Всего: нет |
да, вот:
Добавлено @ 14:37 Письмо то само правильно составлено, вот как файл считать и перекодировать в Base64... |
|||
|
||||
| Matematik |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1027 Регистрация: 11.3.2006 Репутация: 24 Всего: 50 |
загрузка в строку файла
дальше передавай в EncodeBase64
|
||||
|
|||||
| Dmitry_177 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 22.9.2006 Репутация: нет Всего: нет |
Спасибо за код... Вы очень добры... Но я пишу на API, хотел бы без файлового потока обойтись, точнее без модуля Classes переводить файл в строку... функциями CreateFile и ReadFile сделал, в коде есть, в чем-то там ошибка...
|
|||
|
||||
| Dmitry_177 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 22.9.2006 Репутация: нет Всего: нет |
Что-то вроде получается ))) Строку перевожу в Base64 и для наглядности(в качестве теста) вставляю ее в Memo.. Сделал я так, если файл больше 54 байт, то считываем его по 54 байта в строку, а если нет то в одну строчку...
Как такой алгоритм? Или надо еще как-то? А еще, если файл больше 54 байт я считываю по 54 байт, а последняя строка может быть вовсе и не 54 байта, и при переводе в Base64 оставшееся место стокт может занять мусор, как это убрать это? Я дкмал размер файла поделить на 54 и последнюю строку установить размер длиной на остаток от деления и считать... Но мне кажется это все как-то муторно, наверно есть способ получше, подскажите пожалйста... Заранее спасибо.
|
|||
|
||||
| Serg89 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 6.5.2007 Репутация: нет Всего: нет |
Dmitry_177 выложи пожалуйста полный сорц =)
|
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 14 Всего: 128 |
вот "хакеров-ламеров" развелось... почту(файлы) слать без ведома пользователя... ай-ай-ай... нехорошо.
не успел зарегиться, а ему уже полный сорц подавай -------------------- There are always someone smarter than you... |
|||
|
||||
| aktuba |
|
|||
![]() Смышленный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1915 Регистрация: 24.4.2006 Где: Планета Земля Репутация: 9 Всего: 38 |
Serg89, твоя просьба - в раздел "Работа"...
MetalFan, а ты по-другому видел когда-нибудь? -------------------- ![]() |
|||
|
||||
![]()
|
| Правила форума "Delphi: Сети" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Сети | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |