![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 23.08.2008
Сообщений: 51
|
![]()
Ребята, подскажите пожалуйста как осуществить низкоуровневую (API C++) отправку файла на e-mail? Очень интересно как там все происходит! Буду благодарен за любую информацию. Желательно поподробнее!
![]() |
![]() |
![]() |
![]() |
#2 | |
somewhere else
Участник клуба
Регистрация: 17.07.2008
Сообщений: 1,409
|
![]() Цитата:
"Тяжело в учении, легко в бою" - А.В. Суворов
|
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 23.08.2008
Сообщений: 51
|
![]()
Да, этот код я уже встречал.. Вот только понять не могу, где же тут имя файла который нужно отправить, или указатель на него? Еще вопрос: можно ли используя созданный сокет из приведенного выше кода, отправить файл с помощью функции TransmitFile ? Прошу не винить строго, если я что-то недоглядел. Я в апи новичек.
|
![]() |
![]() |
![]() |
#4 |
somewhere else
Участник клуба
Регистрация: 17.07.2008
Сообщений: 1,409
|
![]()
Вопрос немного другой нежели кажется. Что делает TansmittFile ? Она считывает весь файл в память процесса и потом передает его как обычные пакеты. Вы можете использовать этот открытый сокет для взаимодействия с сервером, но сам принцип взаимодействия не укладывается в примитивную передачу байтов туда сюда. Есть спец.формат и как раз вот это:
"HELO domain.ru\r\n", "MAIL FROM:<", "RCPT TO:<vasya@pupkin.ru>\r\n", "DATA\r\n", "", "QUIT\r\n", - его часть которая отвечает за инициализацию создания письма. Т.е на другом конце провода просто есть серверный сокет который циклические слушает порт SMTP и от полученных через этот порт данных он и решит что ему дальше делать. Если вкратце то вам нужно почитать как сервер хочет получить свой файл. Если вы просто его вышлите с помощью TansmittFile - толку от этого не будет, потому что сервер его не сможет принять - вы его об этом не предупредили ![]()
"Тяжело в учении, легко в бою" - А.В. Суворов
|
![]() |
![]() |
![]() |
#5 |
somewhere else
Участник клуба
Регистрация: 17.07.2008
Сообщений: 1,409
|
![]()
Вопрос немного другой нежели кажется. Что делает TansmittFile ? Она считывает весь файл в память процесса и потом передает его как обычные пакеты. Вы можете использовать этот открытый сокет для взаимодействия с сервером, но сам принцип взаимодействия не укладывается в примитивную передачу байтов туда сюда. Есть спец.формат и как раз вот это:
"HELO domain.ru\r\n", "MAIL FROM:<", "RCPT TO:<vasya@pupkin.ru>\r\n", "DATA\r\n", "", "QUIT\r\n", - его часть которая отвечает за инициализацию создания письма. Т.е на другом конце провода просто есть серверный сокет который циклические слушает порт SMTP и от полученных через этот порт данных он и решит что ему дальше делать. Если вкратце то вам нужно почитать как сервер хочет получить свой файл. Если вы просто его вышлите с помощью TansmittFile - толку от этого не будет, потому что сервер его не сможет принять - вы его об этом не предупредили ![]()
"Тяжело в учении, легко в бою" - А.В. Суворов
|
![]() |
![]() |
![]() |
#6 |
Пользователь
Регистрация: 23.08.2008
Сообщений: 51
|
![]()
А нельзя ли поподробнее о строчках выделенных красным!? Все-таки я недопонимаю, как серверу дать знать что я хочу передать ему файл? и как узнать "согласен-ли" он его принять.. может есть у кого исходник, ЛЮДИ!!!! Или объясните мне у приведенного кода построчно, что, куда и зачем! Я раньше дельфи юзал, так там я отправлял файл с помощью готового компонента... должен же быть его аналог написанный на апи!
![]() |
![]() |
![]() |
![]() |
#7 |
somewhere else
Участник клуба
Регистрация: 17.07.2008
Сообщений: 1,409
|
![]()
В википедии есть ссылка на спецификацию протокола. Но сама спецификация, спорю, такая же идиотская как и спецификация SQL или HTTP - 20 строк размазаны по 150 страницам, но что делать, люди пожелали придать вес элементарным вещам и получили нечто что даже и читать то не хочется.
"Тяжело в учении, легко в бою" - А.В. Суворов
|
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 23.08.2008
Сообщений: 51
|
![]()
Ну и на этом спасибо! Кажется кое-чего начал понимать.. нашел мало-мальской инфы.. теперь дело времени..
|
![]() |
![]() |
![]() |
#9 |
Форумчанин
Регистрация: 18.04.2009
Сообщений: 688
|
![]()
я скопировал этот код и он не скомпилился
Код:
SOCKET nSMTPServerSocket;//что это??? F1 не помог char *MailMessage[] = { "HELO domain.ru\r\n", "MAIL FROM:<", "RCPT TO:<vasya@pupkin.ru>\r\n", "DATA\r\n", "", "QUIT\r\n", NULL };//что значат строки в этом массиве строк? почему там постояно используется возврат каретки и переход на новую строку? lstrcat(MailMessage[1], "purpe@sources.ru>\r\n");//это как бы склеивание строк? |
![]() |
![]() |
![]() |
#10 |
Форумчанин
Регистрация: 18.04.2009
Сообщений: 688
|
![]()
я скопировал этот код и он не скомпилился
Код:
SOCKET nSMTPServerSocket;//что это??? F1 не помог char *MailMessage[] = { "HELO domain.ru\r\n", "MAIL FROM:<", "RCPT TO:<vasya@pupkin.ru>\r\n", "DATA\r\n", "", "QUIT\r\n", NULL };//что значат строки в этом массиве строк? почему там постояно используется возврат каретки и переход на новую строку? lstrcat(MailMessage[1], "purpe@sources.ru>\r\n");//это как бы склеивание строк? |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Отправить по e-mail папку с файлами | Titan123 | Работа с сетью в Delphi | 4 | 22.12.2008 19:42 |
Как програмно отправить письмо на E-mail ? | SG13 | Работа с сетью в Delphi | 2 | 13.06.2008 12:50 |
Подскажите как отправить E-mail из программы... | Артем Чижук | Общие вопросы Delphi | 1 | 07.06.2008 08:47 |