Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

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

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

Отправка письма на почту - C++
Здравствуйте. Пожалуйста подскажите рабочий код для отправки письма на электронную почту. P.S. Извините, что нету кода). Прост не знаю...

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

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

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

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

Программа читающая почту - C++
Привет. Надумал такую идею. Есть почтовый ящик с кучей писем. Нужно из этого ящика скопировать в таблицу word дату, отправителя и название...

14
slice
35 / 78 / 4
Регистрация: 04.11.2010
Сообщений: 249
09.03.2011, 16:07 #2
Тебе надо текст содержащийся в otpravka.txt отправить в тексте письма, или прикрепить этот файл к письму?

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

Не по теме:

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

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

Код от Danvern хорош, но нужно, чтобы там ещё и прикреплялся файл?
0
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;
}
0
slice
35 / 78 / 4
Регистрация: 04.11.2010
Сообщений: 249
26.03.2011, 13:28 #15
Цитата Сообщение от Saiberg Посмотреть сообщение
в инете нечего не нашел. отснифал трафик мэйл клиента.
круто! вместо того, чтоб прочитать rfc, препарируешь протокол снифером))
0
26.03.2011, 13:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.03.2011, 13:28
Привет! Вот еще темы с ответами:

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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