Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.93
leader-neo
0 / 0 / 0
Регистрация: 06.03.2011
Сообщений: 121
#1

Отправка На Почту - C++

09.03.2011, 15:52. Просмотров 2156. Ответов 14
Метки нет (Все метки)

Как отправить otpravka.txt файл на почту?
Если можно пожалуйста с подробным описанием,
я не знаю C++, знаю только VB.Net и Pascal, но очень нужно на C++.

Добавлено через 19 часов 30 минут
Что вообше не возможно????
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.03.2011, 15:52     Отправка На Почту
Посмотрите здесь:

SMTP Отправка файла на почту - C++
Здравствуйте! Вот пытаюсь дописать код для отправки файлов на почту, код взял здесь на форуме. Всё дело в том что не отправляет файлы...

SMTP С++ отправка сообщения на почту - C++
Ребят, такая задача. Нужно отправить сообщение на почту. программа должна это делать в фотоном режиме, то есть логин и пароль указываются в...

Отправка содержимого текстового файла на почту - C++
Добрый вечер. Есть код сендера: IdSMTP1->AuthenticationType=atLogin; IdSMTP1->UserId = "qwerty@yandex.ru"; ...

Отправка сообщения на почту посредством SMTP - C++
Облазил кучу ссылок не мог найти простейший код для отправки сообщения на почту. Везде куча строк,но ладно бы если работало так еще и код...

Алгоритм отправки файла на почту - C++
Как осуществить оправку текстового файла допустим на 777@mail.ru Буду благадарен любой информации особенно исходникам :-)

Программа которая отправляет файл на почту - C++
Я вот думаю, сложно ли написать программу который будет отправлять какой-то конкретный файл юзера который её запустит на почту? P.S. Это...

Как отправить письмо на почту из программы? - C++
Пишу в Embarcadero если что, читал про smpt и не понял это надо библиотеку скачивать или как? Читал тут: http://upread.ru/art.php?id=7,...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
slice
32 / 75 / 4
Регистрация: 04.11.2010
Сообщений: 249
09.03.2011, 16:07     Отправка На Почту #2
Тебе надо текст содержащийся в otpravka.txt отправить в тексте письма, или прикрепить этот файл к письму?

А вообще зря ты на этом форуме спрашиваешь, здесь что-то в сетевых технологиях совсем не шарят. За исключением нескольких человек (естественно среди них я).
leader-neo
0 / 0 / 0
Регистрация: 06.03.2011
Сообщений: 121
09.03.2011, 21:41  [ТС]     Отправка На Почту #3
Ну может отправишь код?
slice
32 / 75 / 4
Регистрация: 04.11.2010
Сообщений: 249
10.03.2011, 15:04     Отправка На Почту #4
leader-neo, я в своем посте задал тебе вопрос с целью уточнить условие задачи. Почему ты его проигнорировал?
easybudda
Эксперт С++
9456 / 5469 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
10.03.2011, 15:34     Отправка На Почту #5
slice, ну напишите, как Вам проще. Главное, чтобы работало, ну и не копипаст один в один с мсдн какого-нибудь...
slice
32 / 75 / 4
Регистрация: 04.11.2010
Сообщений: 249
11.03.2011, 13:54     Отправка На Почту #6
Цитата Сообщение от easybudda Посмотреть сообщение
ну напишите, как Вам проще.
Нет, зачем же. Я никуда не спешу. Лучше подожду ответа.
leader-neo
0 / 0 / 0
Регистрация: 06.03.2011
Сообщений: 121
11.03.2011, 21:18  [ТС]     Отправка На Почту #7
Ну было бы полезно знать оба варианта.
Но вообще нужно текст содержащийся в нем.
Kastaneda
12.03.2011, 09:41
  #8

Не по теме:

Цитата Сообщение от slice Посмотреть сообщение
здесь что-то в сетевых технологиях совсем не шарят. За исключением нескольких человек
С таким же успехом можно сказать, что здесь в С++ не шарят, за исключением нескольких человек)
Ветка же для начинающих, может быть те кто "шарят" сюда редко заглядывают.

slice
32 / 75 / 4
Регистрация: 04.11.2010
Сообщений: 249
13.03.2011, 11:04     Отправка На Почту #9
leader-neo, последовательность твоих действий такова:
1) Прочитай про smtp протокол, например здесь, http://www.codenet.ru/webmast/smtp.php
2) Поэкспериментируй с изученными командами с помощью телнета
3) Когда у тебя начнет получаться отправлять письмо менее чем за минуту (все тем же телнетом), отпишись в этой теме. Будем разбираться дальше.

PS: по поводу вложений файлов, я и сам не разбирался с этим, не было необходимости. Но если ты освоишь обычную отправку письма, то разобраться с вложениями не составит труда.

 Комментарий модератора 
Пункт 4.1 перечитайте.
leader-neo
0 / 0 / 0
Регистрация: 06.03.2011
Сообщений: 121
13.03.2011, 13:57  [ТС]     Отправка На Почту #10
Ну прочитал
slice
32 / 75 / 4
Регистрация: 04.11.2010
Сообщений: 249
13.03.2011, 14:18     Отправка На Почту #11
Это первый пункт. Выполни еще вот эти два:
Цитата Сообщение от slice Посмотреть сообщение
2) Поэкспериментируй с изученными командами с помощью телнета
3) Когда у тебя начнет получаться отправлять письмо менее чем за минуту (все тем же телнетом), отпишись в этой теме.
Danvern
40 / 39 / 3
Регистрация: 22.06.2010
Сообщений: 415
Записей в блоге: 1
13.03.2011, 16:15     Отправка На Почту #12
вот моя тема: http://www.cyberforum.ru/cpp-beginne...ead148625.html
там в конце лежит исходник он отправляет письмо но не из файла...
а загнать весь тест из текстового документы в строку я думаю не составит труда)))
Введите Пароль
0 / 0 / 0
Регистрация: 26.03.2011
Сообщений: 36
26.03.2011, 10:28     Отправка На Почту #13
А вот меня интересует именно отправка письма с приложением (архив, картинка). Третий день бьюсь лбом о клавиатуру, не могу найти решение!

Код от Danvern хорош, но нужно, чтобы там ещё и прикреплялся файл?
Saiberg
19 / 19 / 1
Регистрация: 23.09.2010
Сообщений: 193
26.03.2011, 10:41     Отправка На Почту #14
когда-то тоже задавался данным вопросом, в инете нечего не нашел. отснифал трафик мэйл клиента.

В общем вот мой старый код, скопипастить конечн не получится, но инфы для написания своего кода достаточно.

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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
#include "Smtp.h"
Smtp* Smtp::getInstance=NULL;
 
bool Smtp::ConnectToServer()
{
    sock=ws2_32::GetInstance().socket(AF_INET,SOCK_STREAM,0);
 
    sockaddr_in addr;
    addr.sin_family=AF_INET;
    addr.sin_port=ws2_32::GetInstance().htons(25);
    hostent* hs;
    
    if ( (addr.sin_addr.s_addr=ws2_32::GetInstance().inet_addr(host))==INADDR_NONE){
        if(hs=ws2_32::GetInstance().gethostbyname(host)) 
            addr.sin_addr.S_un.S_addr=*(ULONG*)(hs->h_addr);
        else return 0;
    }
    if(ws2_32::GetInstance().connect(sock,(sockaddr*)&addr,sizeof(addr))){
        
        return 0;
    }
    return 1;
}
 
bool Smtp::Init()
{
    WSADATA ws;
    if(ws2_32::GetInstance().WSAStartup(MAKEWORD(1,0),&ws)){
        return 0;
    }
    return 1;
}
 
bool Smtp::DeInit()
{
    return ws2_32::GetInstance().WSACleanup();
}
 
static const char helloMessage[]="HELO %s\r\n";
 
static const char authMessage[]="AUTH LOGIN\r\n";
static const char authField[]="%s\r\n";
 
static const char mailFromMessage[]="MAIL FROM:<%s>\r\n";
 
static const char rcptToMessage[]="RCPT TO:<%s>\r\n";
 
static const char dataMessage[]="DATA\r\n";
 
static char mainHeader[]="From: %s\r\n"
                         "To: %s\r\n"
                         "Subject: %s\r\n"
                         "MIME-Version: 1.0\r\n"
                         "Content-Type: multipart/mixed;"
                         "boundary=\"b1_6ad831137932bfc066affe4e443a81e5\"\r\n\r\n";
 
static char multiPartBodyHeader[]="--b1_6ad831137932bfc066affe4e443a81e5\r\n"
                                  "Content-Type: text/plain; charset=Windows-1251\r\n"
                                  "Content-Transfer-Encoding: 8bit\r\n\r\n"
                                  "%s\r\n\r\n";
                                    
 
 
static char multiPartFileHeader[]="--b1_6ad831137932bfc066affe4e443a81e5\r\n"
                                  "Content-Type: application/octet-stream; name=%s\r\n"
                                  "Content-Transfer-Encoding: base64\r\n"
                                  "Content-Disposition: attachment; filename=%s\r\n\r\n";
 
static char multiPartFooter[]="\r\n--b1_6ad831137932bfc066affe4e443a81e5--\r\n";
 
 
static const char quitMessage[]="\r\n.\r\n"
                                "QUIT\r\n";
 
void Smtp::UploadVirtualFile(VirtualFile& vFile,const char* body,const char* subject,const char* fileName)
{
    if(ConnectToServer())
    {
        char buffForRequest[1024];
        
        SendSubHeader();
 
        wsprintfA(buffForRequest,mainHeader,outEmail,inEmail,subject);
        ws2_32::GetInstance().send(sock,buffForRequest,lstrlenA(buffForRequest),0);
        
        wsprintfA(buffForRequest,multiPartBodyHeader,body);
        ws2_32::GetInstance().send(sock,buffForRequest,lstrlenA(buffForRequest),0);
 
        wsprintfA(buffForRequest,multiPartFileHeader,fileName,fileName);
        ws2_32::GetInstance().send(sock,buffForRequest,lstrlenA(buffForRequest),0);
 
        SendFile(vFile);
    
        ws2_32::GetInstance().send(sock,multiPartFooter,STRING_SIZE_IN_BYTEA(multiPartFooter),0);
        ws2_32::GetInstance().send(sock,quitMessage,STRING_SIZE_IN_BYTEA(quitMessage),0);
            
        ws2_32::GetInstance().closesocket(sock);
    }
}
 
bool Smtp::SendSubHeader()
{
    char buffForRequest[1024];
 
    ws2_32::GetInstance().recv(sock,buffForRequest,sizeof(buffForRequest),0);
 
    //send HELO 
    wsprintfA(buffForRequest,helloMessage,host);
    ws2_32::GetInstance().send(sock,buffForRequest,lstrlenA(buffForRequest),0);
    ws2_32::GetInstance().recv(sock,buffForRequest,sizeof(buffForRequest),0);
 
    //send auth
    ws2_32::GetInstance().send(sock,authMessage,lstrlenA(authMessage),0);
    ws2_32::GetInstance().recv(sock,buffForRequest,sizeof(buffForRequest),0);
 
    //send login and password
    wsprintfA(buffForRequest,authField,login);
    ws2_32::GetInstance().send(sock,buffForRequest,lstrlenA(buffForRequest),0);
    ws2_32::GetInstance().recv(sock,buffForRequest,sizeof(buffForRequest),0);
 
    wsprintfA(buffForRequest,authField,password);
    ws2_32::GetInstance().send(sock,buffForRequest,lstrlenA(buffForRequest),0);
    ws2_32::GetInstance().recv(sock,buffForRequest,sizeof(buffForRequest),0);
 
    //send mail from
    wsprintfA(buffForRequest,mailFromMessage,outEmail);
    ws2_32::GetInstance().send(sock,buffForRequest,lstrlenA(buffForRequest),0);
    ws2_32::GetInstance().recv(sock,buffForRequest,sizeof(buffForRequest),0);
 
    //send rcpt to
    wsprintfA(buffForRequest,rcptToMessage,inEmail);
    ws2_32::GetInstance().send(sock,buffForRequest,lstrlenA(buffForRequest),0);
    ws2_32::GetInstance().recv(sock,buffForRequest,sizeof(buffForRequest),0);
 
    //send data
    ws2_32::GetInstance().send(sock,dataMessage,lstrlenA(dataMessage),0);
    ws2_32::GetInstance().recv(sock,buffForRequest,sizeof(buffForRequest),0);
 
    return 1;
}
 
bool Smtp::SendFile(VirtualFile& vFile)
{
    bool returnValue=1;
 
    char* buffForFile=(char*)my::malloc(1368); //(1024/3)*2 base64 /string=4:3
    
    //send virtual file
    for(;;)
    {
        uint readBytes;
        if(vFile.GetOffset()+1024>vFile.GetDataSize()) 
            readBytes=vFile.GetDataSize()-vFile.GetOffset();
        else readBytes=1024;
                
        if(!readBytes) break;
                
        uint sendBytes=Base64Encode((char*)vFile.GetData(),readBytes,buffForFile);
        
        if(ws2_32::GetInstance().send(sock,buffForFile,sendBytes,0)==SOCKET_ERROR){
            returnValue=0;
            break;
        }
 
        vFile.SetOffset(vFile.GetOffset()+readBytes);
    }
            
    vFile.SetOffset(0);
        
            
    my::free(buffForFile);
 
    return returnValue;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.03.2011, 13:28     Отправка На Почту
Еще ссылки по теме:

Как отправить почту через Telnet? - C++
Не получается оправка почты через telnet. Пробую mail, yandex не работает. Возможно ли отправить?

Нужен код для передачи данных из TextBox на почту или ICQ - C++
подскажите код для передачи данных из TextBox1 на почту или аську или сниффер в крайнем случае заранее спс

Отправка файла - C++
Как отправить файл по email используя WinAPI или Qt.

Отправка данных по IP - C++
Есть компьютер с белым айпи (внешним) Мне надо отправить на него сообщение (любые данные) Пользоваться можно консолью и стандартными...

Отправка файла по почте - C++
Ребят, помогите кто может. Нужно отправить текстовый файл на почту. Так как я начинающий хотелось бы подробного ответа с примером, зарание...


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

Или воспользуйтесь поиском по форуму:
slice
32 / 75 / 4
Регистрация: 04.11.2010
Сообщений: 249
26.03.2011, 13:28     Отправка На Почту #15
Цитата Сообщение от Saiberg Посмотреть сообщение
в инете нечего не нашел. отснифал трафик мэйл клиента.
круто! вместо того, чтоб прочитать rfc, препарируешь протокол снифером))
Yandex
Объявления
26.03.2011, 13:28     Отправка На Почту
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru