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

SMTP Отправка файла на почту - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ scanf (какие различия между %f %g %e) http://www.cyberforum.ru/cpp-beginners/thread785770.html
Есть вопрос по функции scanf, а именно про спецификации формата. %f - читает число с плавающей точкой. %g - читает число с плавающей точкой %e - читает число с плавающей точкой http://lord-n.narod.ru/download/books/walla/programming/Spr_po_C/13/scanf.htm Есть ли различия в них? И можно ли сделать так, чтобы scanf читал как целое, так и вещественное число?
C++ Как в С++ реализовать(записать) LN (натуральный логарифм по основанию е)? Как в С++ реализовать(записать) LN (натуральный логарифм по основанию е)? http://www.cyberforum.ru/cpp-beginners/thread785762.html
Указатели C++
1) Предположим, что p - указатель, установленный на целую переменную со значением 3. Что можно сказать о значении выражений p, * p, & p, * & p и & * p? 2) Чему равны sizeof (char) и sizeof (char *)? 3)Предположим, что p1 и p2 - указатели типа int *. В чем разница между присвоении p1 = p2и * p1 = * p2? Ли допустимыми присваивания * p1 = p2, p1 = * p2, p1 = & p2? Спасибо еще раз
C++ undefined reference to `gzdopen'
Здравствуйте, уважаемые форумчане! Нужна ваша помощь. Среда - Dev-Cpp. Пытаюсь написать программу с использованием zlib. Компилятор ругается: ... undefined reference to `gzdopen' ...
C++ Написать блок-схему для моего кода http://www.cyberforum.ru/cpp-beginners/thread785747.html
может кто то помочь написать блок-схему для моего кода? #include <iostream> void main(void) { mitka: ; int n = 0; std::cout << "Vvedit' kil'kist' ryadkiv: "; std::cin >> n; system("cls");
C++ Вылетает программа Компилятор ошибок не выдает. В ходе работы программы вылетает окно: Скриншот Вот код: #include <iostream> using namespace std; int main() { int a,k,n,s=0,i=0; a=k; подробнее

Показать сообщение отдельно
Ineibet
 Аватар для Ineibet
0 / 0 / 0
Регистрация: 03.02.2013
Сообщений: 12
13.02.2013, 22:00     SMTP Отправка файла на почту
Здравствуйте! Вот пытаюсь дописать код для отправки файлов на почту, код взял здесь на форуме. Всё дело в том что не отправляет файлы больших размеров, от файла приходит только 7 байт. Что можно сделать?!

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
#include <iostream>
#include <fstream>
#include <windows.h>
#pragma pack(1)
#pragma comment(lib,"Ws2_32.lib")
 
using namespace std;
 
void Base64Encode(const char* pText, char* pResBuf, std::size_t bufLen)
{
    static union
    {
        char arr[3];
        struct
        {
            unsigned a1 : 6, a2 : 6, a3 : 6, a4 : 6;
        } s;
    };
    static char ini[] = {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"};
    memset(pResBuf, '\0', bufLen);
    int size = std::strlen (pText);
    int i, j, k;
    for(i = 0, k = 0; i < size;)
    {
        arr[0] = arr[1] = arr[2] = '\0';
        for(j = 2; j >= 0 && i < size; --j, ++i)
        {
            arr[j] = pText[i];
        }
        pResBuf[k++] = ini[s.a4];
        pResBuf[k++] = ini[s.a3];
        pResBuf[k++] = (1 > j ? ini[s.a2] : '=');
        pResBuf[k++] = (0 > j ? ini[s.a1] : '=');
    }
    return;
}
 
int main ()
{
    std::ifstream ifs("Sending.rar", std::ios::binary);
    if(ifs.is_open())
    {
        setlocale(LC_ALL,"Russian");
        SOCKET nSMTPServerSocket;
        struct sockaddr_in smtp_address;
        int nConnect, iMsg = 0, iEnd = 0, rc;
        char sBuf[4096], buffer2[512];
        char hostname[80] = "smtp.yandex.ru"; // Почтовый сервер ящика отправителя
        hostent *h = NULL;
        char login[] = "Login@yandex.ru", password[] = "Password"; // Логин и пароль ящика отправителя
        
        // Размер файла
        FILE* file = fopen("Sending.rar", "rb");
        if( file==NULL ) return -1;
        fseek(file, 0, SEEK_END);
        long size = ftell(file);
        char* fileContent = new char[size];
        size_t index;
        for(index = 0; ifs.get(fileContent[index]); ++index);
        fileContent[index] = 0;
        char seventhString[1024] =
            "from:<Login@yandex.ru>\r\n" // Ящик отправителя
            "to:<To@yandex.ru>\r\n"  // Ящик получателя
            "subject: Письмо\r\n"
            "Mime-Version: 1.0\r\n"
            "Content-Type: multipart/mixed; boundary=bound\r\n"
            "\r\n--bound\r\n"
            "Content-type: text/plain; charset=windows-1251\r\n"
            "Content-Transfer-Encoding: quoted-printable\r\n\r\n"
            "Текст тут\r\n" //текст письма
            "\r\n--bound\r\n"
            "Content-Type: plain; name=Sending.rar\r\n" // Имя файла
            "Content-Transfer-Encoding: base64\r\n"
            "Content-Disposition: attachment\r\n\r\n";
        char seventhStringMiddle[512];
        char seventhStringEnd[] = "\r\n--bound--\r\n.\r\n";
 
        char MailMessage[][1024] =
        {
            "EHLO mail.ru\r\n",
            "AUTH LOGIN\r\n",
            "",
            "",
            "mail from:<Login@yandex.ru>\r\n", // Ящик отправителя
            "rcpt to:<To@yandex.ru>\r\n", // Ящик получателя
            "data\r\n",
            "",
            "QUIT\r\n"
        };
 
        Base64Encode(login, buffer2, sizeof(buffer2));
        strcpy(MailMessage[2], strcat(buffer2,"\r\n"));
 
        Base64Encode(password, buffer2, sizeof(buffer2));
        strcpy(MailMessage[3], strcat(buffer2,"\r\n"));
 
        Base64Encode(fileContent, seventhStringMiddle, sizeof(seventhStringMiddle));
        strcat(seventhString, strcat(strcat(seventhStringMiddle,"\r\n"), seventhStringEnd));
        strcpy(MailMessage[7], seventhString);
 
        WSADATA WSAData;
        rc = WSAStartup(MAKEWORD(1, 1), &WSAData);
        if(rc) return __LINE__;
        nSMTPServerSocket = socket(PF_INET, SOCK_STREAM, 0);
        if(nSMTPServerSocket != INVALID_SOCKET)
        {
            smtp_address.sin_family = AF_INET;
            h = gethostbyname(hostname);
            if (h == NULL)
            {
                printf("error: Could not resolve ");
                getchar();
                return __LINE__;
            }
            smtp_address.sin_addr.s_addr = inet_addr(inet_ntoa(*(reinterpret_cast<in_addr*>(h->h_addr))));
            smtp_address.sin_port = htons(25);
            nConnect = connect(nSMTPServerSocket, (PSOCKADDR)&smtp_address,
                                                                sizeof(smtp_address));
            if(!nConnect)
            {
                iMsg = iEnd = 0;
                do
                {
                    iEnd = recv(nSMTPServerSocket, sBuf, sizeof(sBuf), 0);
                    sBuf[iEnd] = '\0';
                    printf("Answer: %s", sBuf);
                    printf("Request: %s", MailMessage[iMsg]);
                    send(nSMTPServerSocket, MailMessage[iMsg], strlen(MailMessage[iMsg]), 0);
                    iMsg++;
                } while(iMsg < int(sizeof(MailMessage) / sizeof(*MailMessage)));
                iEnd = recv(nSMTPServerSocket, sBuf, sizeof(sBuf), 0);
                sBuf[iEnd] = '\0';
                printf(sBuf);
            }
            closesocket(nSMTPServerSocket);
        }
        ifs.close();
    }
    else
        std::cerr << "Unable to open input file" << std::endl;
    getchar();
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 17:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru