Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/35: Рейтинг темы: голосов - 35, средняя оценка - 4.60
 Аватар для ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041

Отправка письма на email

27.11.2013, 08:32. Показов 7673. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здорова господа!!!

Пишу щас программку которая должна отсылать письма на email, но ничего не получается.
От что набрасал:
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <winsock.h>
 
int main()
{
    cout <<"Rabota c SOCETAMI"<<endl;
    //PF_INET-протокол семейства интернет
    //SOCK_STREAM-надежный потоковый сокет
    //IPPROTO_TCP-тсp протокол
    SOCKET sock=socket(PF_INET,SOCK_STREAM,IPPROTO_TCP);//создаем дескриптор сокета
 
    return 0;
}
И уже сразу ошибка: 1>------ Построение начато: проект: test, Конфигурация: Debug Win32 ------
1> main.cpp
1>main.obj : error LNK2001: неразрешенный внешний символ "_socket@12"
1>D:\VS_progect\test\Debug\test.exe : fatal error LNK1120: 1 неразрешенных внешних элементов


Не видит функцию socet()???
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.11.2013, 08:32
Ответы с готовыми решениями:

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

Отлов нажатий клавиш в системе и отправка на email
Всем доброе время суток. Ребята нужна помощь... нада зделать клавиатурный шпион.. но так чтоб он присилал дание по майлу... тоисть с...

Не работает отправка письма
Добрый вечер. Помогите советом. Код: IdSMTP1-&gt;UserId = &quot;stas67@yandex.ru&quot;; IdSMTP1-&gt;Password =...

9
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
27.11.2013, 08:33
Цитата Сообщение от ninja2 Посмотреть сообщение
Не видит функцию socet()???
нет реализации сие функции.
1
 Аватар для ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
27.11.2013, 08:40  [ТС]
Цитата Сообщение от Croessmah Посмотреть сообщение
нет реализации сие функции.
Да я догадался, а что winsoc это ж вроде винапи и что по умолчанию dll в system32 нет? Мне что еще их с интернета скачивать?

Добавлено через 1 минуту
Где брать эту библиотеку?
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
27.11.2013, 08:42
А в MSDN посмотреть лень?
http://msdn.microsoft.com/en-u... 85%29.aspx
Requirements
Minimum supported clientWindows 2000 Professional [desktop apps only]
Minimum supported serverWindows 2000 Server [desktop apps only]
HeaderWinsock2.h
LibraryWs2_32.lib
DLLWs2_32.dll

и пример есть:
C++
1
2
3
4
//...
// link with Ws2_32.lib
#pragma comment(lib,"Ws2_32.lib")
//...
1
 Аватар для ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
27.11.2013, 08:44  [ТС]
Цитата Сообщение от Croessmah Посмотреть сообщение
А в MSDN посмотреть лень?
НУ я новичок в виндовс, даже не знаю где искать.
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
27.11.2013, 08:47
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от ninja2 Посмотреть сообщение
НУ я новичок в виндовс, даже не знаю где искать.
да походу еще как минимум в google первый раз
5
 Аватар для ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
27.11.2013, 08:55  [ТС]
А где эти либы находятся? Я глянул в папке lib компилятора VS2010 там вроде токо те либы которые я копировал?

Добавлено через 55 секунд
Цитата Сообщение от Croessmah Посмотреть сообщение
да походу еще как минимум в google первый раз
Не гуглил нашол там кое что, там маны хорошие как работать, а от как подключить нету ничего.

Добавлено через 2 минуты
Охота посмотреть где либы находятся я их не скачивал и вроде работает, значит где то на диске есть, наверно в system32 раз в vs нету щас гляну.

Добавлено через 4 минуты
Ничо не нашол, где эти либы лежат????
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
27.11.2013, 08:56
есть в винде еще такая штука как поиск файлов
1
 Аватар для ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
28.11.2013, 03:00  [ТС]
Цитата Сообщение от Croessmah Посмотреть сообщение
есть в винде еще такая штука как поиск файлов
НУ да запустил, ну пока что ищет. Я думал мб так кто знает где они находятся?!

Добавлено через 3 минуты
Нашол в sdk находится, там целая куча либ.

Добавлено через 2 часа 25 минут
От написал код, но мне на мейл чо то ничего не приходит ????
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
int main()
{
    
    cout <<"Rabota c SOCETAMI"<<endl;
    int error(0);
 
    //1.Инициализация Winsock
    WSADATA ws;//содержит информацию о проинициализированной версии WinsocAPI
    //MAKEWORD( 1, 1 ) - связывает версию версия 1.1
    //WSAStartup() функция которая инициализирует Winsock
    if (FAILED (WSAStartup (MAKEWORD( 1, 1 ), &ws) ) ) 
    {
        // Error...
        error = WSAGetLastError();
        cout <<"error1= "<<error<<endl;
        //...
    }
 
    //2.Создание сокета
    //PF_INET-протокол семейства интернет
    //SOCK_STREAM-надежный потоковый сокет
    //IPPROTO_TCP-тсp протокол
    SOCKET sock;
    if(INVALID_SOCKET==(sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP)))//создаем дескриптор сокета
    {
        error=WSAGetLastError();
        cout <<"error2= "<<error<<endl;
    }
 
    //3.Установка соединения
    struct sockaddr_in smtp_addr; //структура адресс
    memset( &smtp_addr, 0, sizeof( struct sockaddr_in ) );//устанавливает в 0 все байты структуры
    smtp_addr.sin_family = AF_INET;//хз. протокол какой то или ТСП или ЮДП у нас ТСП
    smtp_addr.sin_addr.s_addr = inet_addr("smtp.mail.ru");//Устанавливаем адрес сервера
    smtp_addr.sin_port = htons(25);//smtp порт для сервера обязательно 25 (80-http,23-fttp и т.д. мы должны знать на какой порт передавать данные иначе не будет соединения)
    if(SOCKET_ERROR==connect( sock, ( struct sockaddr* )&smtp_addr, sizeof(smtp_addr)))
    {
        error=WSAGetLastError();
        cout <<"error3= "<<error<<endl;
    }
 
    //4.Посылаем данные
     char   *msg[] =
                        {
                        "HELO smtp.mail.ru\r\n",
                        "MAIL FROM:<dsfsafas@google.ru>\r\n",
                        "RCPT TO:<neovich@mail.ua>\r\n",
                        "DATA\r\n",
                        "Subject:hello\r\n",
                        "",
                        "CRLF.CRLF\r\n",
                        "QUIT\r\nHellow world gacpada \r\n\n.\r\n"//тукст самого сообщения
                        };
/*  if (SOCKET_ERROR == ( send(sock, (char* ) & buff), 512, 0 ) ) 
    {
        // Error...
        error = WSAGetLastError();
        // ... 
    }*/
    int snum=(0);
    while( snum < 8 )
    {
        if( SOCKET_ERROR == send( sock, msg[snum], lstrlen(msg[snum]), 0 ) )
        {
           
            error=WSAGetLastError();
            cout <<"error2= "<<error<<endl;
            closesocket( sock );
            WSACleanup();
            exit(1);
        }
        snum++;
    }
    closesocket( sock );
    cout <<"done"<<endl;
 
    return 0;
}
Добавлено через 2 часа 21 минуту
Нашол где вроде ошибка вот новый код:
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
#pragma comment (lib,"Ws2_32.lib")
#include <winsock.h>
#include <string>
using std::wstring;
using std::string;
#include <fstream>
using std::wifstream;
using std::ofstream;
#include <iostream>
using std::cout;
using std::endl;
using std::cerr;
 
int main()
{
    int error(0);
    //1.Инициализация Winsock
    WSADATA ws;//содержит информацию о проинициализированной версии WinsocAPI
    //MAKEWORD( 1, 1 ) - связывает версию версия 1.1
    //WSAStartup() функция которая инициализирует Winsock
    if (FAILED (WSAStartup (MAKEWORD( 1, 1 ), &ws) ) ) 
    {
        // Error...
        error = WSAGetLastError();
        cout <<"error1= "<<error<<endl;
        exit(1);
    }
 
    //2.Создание сокета
    //PF_INET-протокол семейства интернет
    //SOCK_STREAM-надежный потоковый сокет
    //IPPROTO_TCP-тсp протокол
    SOCKET sock;
    if(INVALID_SOCKET==(sock=socket(PF_INET,SOCK_STREAM,IPPROTO_TCP)))//создаем дескриптор сокета
    {
        error=WSAGetLastError();
        cout <<"error2= "<<error<<endl;
        exit(1);
    }
 
    //3.Установка соединения
    struct sockaddr_in smtp_addr; //структура адресс
    memset( &smtp_addr, 0, sizeof( struct sockaddr_in ) );//устанавливает в 0 все байты структуры
    smtp_addr.sin_family = AF_INET;//хз. протокол какой то или ТСП или ЮДП у нас ТСП
    smtp_addr.sin_addr.s_addr = inet_addr("94.100.177.1");//Устанавливаем адрес сервера
    smtp_addr.sin_port = htons(25);//smtp порт для сервера обязательно 25 (80-http,23-fttp и т.д. мы должны знать на какой порт передавать данные иначе не будет соединения)
    if(SOCKET_ERROR==connect( sock, ( struct sockaddr* )&smtp_addr, sizeof(smtp_addr)))
    {
        error=WSAGetLastError();
        cout <<"error3= "<<error<<endl;
        exit(1);
    }
    //exit(1);
//  4.Посылаем данные
     char   *msg[] =
                        {
                        "HELO smtp.mail.ru\r\n",
                        "MAIL FROM:<ppp@mail.ru>\r\n",
                        "RCPT TO:<neovich@mail.ua>\r\n",
                        "DATA\r\n",
                        "Subject:hello\r\n",
                        "Hellow world gacpada \r\n\n.\r\n",
                        "CRLF.CRLF\r\n",
                        "QUIT\r\n"
                        //тукст самого сообщения
                        };
/*  if (SOCKET_ERROR == ( send(sock, (char* ) & buff), 512, 0 ) ) 
    {
         Error...
        error = WSAGetLastError();
         ... 
    }*/
    int snum=(0);
    while( snum < 8 )
    {
        cout <<msg[snum]<<endl;
        if( send( sock, msg[snum], sizeof(msg[snum]), 0 )<0 )
        {
           
            error=WSAGetLastError();
            cout <<"error4= "<<error<<endl;
            closesocket( sock );
            WSACleanup();
            exit(1);
        }
        int actual_len = 0;
        char buff[300000];
        if (SOCKET_ERROR == (actual_len = recv (sock, (char* ) & buff, 300000, 0 ) ) )
        {
            // Error...
            error = WSAGetLastError();
            cout <<"error5= "<<error<<endl;
            // ... 
        }
        snum++;
    }
    closesocket( sock );
    cout <<"done"<<endl;
 
    return 0;
}
от здесь:
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
int snum=(0);
    while( snum < 8 )
    {
        cout <<msg[snum]<<endl;
        if( send( sock, msg[snum], sizeof(msg[snum]), 0 )<0 )
        {
           
            error=WSAGetLastError();
            cout <<"error4= "<<error<<endl;
            closesocket( sock );
            WSACleanup();
            exit(1);
        }
        int actual_len = 0;
        char buff[300000];
        if (SOCKET_ERROR == (actual_len = recv (sock, (char* ) & buff, 300000, 0 ) ) )
        {
            // Error...
            error = WSAGetLastError();
            cout <<"error5= "<<error<<endl;
            // ... 
        }
        snum++;
    }
При получении ответа от сервера возвращается код 10054 - это означает что сервер принудительно закрыл соединение. Почему такое происходит???

Добавлено через 2 часа 1 минуту
В общем сервер не что но не хочет отвечать, сделал на порт 587 заработало, началось соединение, но не получается полностью весь запрос отправить. От что получается
Клиент: HELO smtp.mail.ru
Сервер: 220 smtp32.i.mail.ru ESMTP ready
Клиент: AUTH LOGIN

И сервер приходится долго ждать пока время ожидания истекает, короче сервер не дает ответа на авторизацию.

Делаю без авторизации тоже самое, ждет минут 10 и пропадает соединение с моей стороны, 10053 ошибка.

Как изменить время ожидания и в чом проблема???

Добавлено через 11 часов 1 минуту
Кое как доделал прогу, ну от она отправляет сообщения только через мой мэйл. Мне нужно обязательно авторизоваться: указать логи пароль, а можно как то без авторизации письма отсылать и что будет если я отошлю допустим 1000 000 сообщений????

Добавлено через 1 минуту
Мне нужно сделать такую прогу что б она хорошо отсылала письма массово и что б они в папку входящие попадали, а не в спам!!!

Добавлено через 3 минуты
Как вообще сделать рассылку без аутентификации? Это что мне нужно свой SMPT сервер создавать или искать сервер который не будет требовать аутентификации??? Просветите новичка!!!

Добавлено через 3 минуты
Как вообще правильно делать рассылки? Это что нужно где то базу SMPT серверов найти без аутентификации? Я так думаю походу на сервере с аутентификацией например на smpt.mail.ru много писем не отправишь?
0
 Аватар для ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
02.12.2013, 20:20  [ТС]
Здорова господа!!!

Мб кто знает как можно в письме ссылку отослать? Ничего не получается, от запрос который я отсылаю:
C++
1
2
3
4
5
6
7
8
9
10
11
        v.push_back("HELO vac9\r\n");
        v.push_back("AUTH LOGIN\r\n");
        v.push_back(string(user64)+"\r\n");
        v.push_back(string(pass64)+"\r\n");
        v.push_back("MAIL FROM:<"+smpt_login+">\r\n");
        v.push_back("RCPT TO:<"+mail[i]+">\r\n"):
        v.push_back("DATA\r\n");
        v.push_back("Subject:"+theme+"\r\n");
        v.push_back(massage[rand()%massage.size()]+"\r\n\n.\r\n");
    //  v.push_back("CRLF.CRLF\r\n");
        v.push_back("QUIT\r\n");
Все доходит в виде текста нормально, но ссылки не становятся ссылками, а просто символы заменяются на html-сущьности.

Пытался добавить строку в запрос:
C++
1
v.push_back("Content-Type: text/html; charset=windows-1251\r\n");
Ничего не получается после нее сервер возвращает ответ 250 accepted, но сдедующую строку я передаю "DATA\r\n" и после нее возвращается ошибка 500 unrecognized command (непризнанная команда). Не получается правильно свормировать запрос, использую для передачи сокеты, мб кто знает как передать??? Мне ссылки нужно передавать!?

Добавлено через 43 минуты
А ладно получилось все, нужно в сообщения встраивать тип передаваемых данных, короче внимательнее читать спецификацию SMTP протокола!!!

Добавлено через 3 часа 55 минут
В общем пытался токо с помощью программки отослать сообщения людям на мэйлы, так меня сразу забанили использовал smtp.mail.ru с авторизацией. Где можно найти бесплатный SMTP сервер для рассылки сообщений? Мне нужно отправлять примерно на 1 000 000 email сообщения примерно день через день????

Добавлено через 5 минут
Сервер возвращает "550 spam message rejected" и разрывает соединение.
Что это значит и как с этим бороться???

Добавлено через 18 минут
Написал в службу поддержки что б разблокировали, там ссылка была по которой можно востановить ак, ну походу нужно видимо делать задержу в несколько минут ну например сообщение одно отправлять в промежутке от 2 до 5 минут, как бы имитируя пользователя, попробую как разбанят с задержкой сделать, конечно лучше какой нить нормальный smtp сервер найти или несколько серверов, один забанил отправляешь через другой, нужен список база этих серверов?!

Добавлено через 1 минуту
У меня тут идея закралась, а что если попытаться свой сервер поставить, настроить и рассылать через свой?

Добавлено через 16 часов 7 минут
Давайте рассмотрим схему как письма отправляются и доходят до пользователя, от есть у нас smtp.mail.ru мы на него отправляем сообщение допустим адреса sdfs@mail.ru этот smtp.mail.ru сервер отправляет на pop.mail.ru откуда уже пользователь считывает письмо к себе в клиент ну тут как бы все ясно, smtp.mail.ru знает pop.mail.ru и ему базу так бы сказать отдает, а если мы будем пересылать письмо адреса dsf@gmail.ru у которого будет pop.gmail.ru сервер исходящей почты и мы отправляем мэйл чере smtp.mail.ru мэйл который gmail, вопрос как smtp.mail.ru сможет переслать письмо на адресс dsf@gmail.ru, как это все происходит? С каким сервером будет авторизоваться smtp.mail.ru c smtp.gmail.ru или как он с ним произведет авторизацию.

Мне если честно не понятно как происходит отправка и доставка сообщения на aa@gmail.ru допустим через smtp.mail.ru, оно же ведь как то должно попасть на сервер исходящей почты pop.gmail.ru , как оно туда попадет, тут просто пробелы, в инете я смотрю там есть разные схемы, но ни одна не описывает как они попадают, да было описание так же само производят авторизацию, но как сервер smtp.mail.ru произведет авторизацию с smpt.gmail.ru??? хз. как? Короче никак нимогу разобрать!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.12.2013, 20:20
Помогаю со студенческими работами здесь

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

Отправка письма на мыло
С помощью какого кода можно отправить письмо на мыло (C++ конечно)?? Я просто такое ещё не изучал и в нете ничего толкового не нашел... ...

Отправка письма на e-mail
Нужна функция отправки письма на e-mail....Вообще не представляю как это реализовать, плиз подскажите.

Подскажите литературу: как реализуется отправка email и sms?
Здравствуйте, хочу разобраться как реализуется отправка email и sms, есть литература на эту тему ?

Отправка email-сообщения на smtp сервер с ssl
Помогите написать программу на c++, отправляющую email сообщение на smtp сервер с ssl.


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru