Модераторы: feodorv
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> не получается отправить почту через smtp.mail.ru, все проходит, но почта не приходит 
:(
    Опции темы
tim91
Дата 19.5.2011, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 5.4.2011

Репутация: -1
Всего: -1



Код

int err;
    WSADATA wsaData;
    SOCKET s;
    SOCKET p;
    hostent *d_addr;
    struct sockaddr_in addr;
    char rec[1024];

    err = WSAStartup(MAKEWORD(1,1), &wsaData);
    if(err != 0)
    {
        printf("error in wsaStartup\n");
        return 1;
    }
    p = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    if(p == INVALID_SOCKET)
    {
        printf("Invalid socket\n");
    }
    d_addr = gethostbyname("pop.mail.ru");
    if(d_addr == NULL)
    {
        printf("Error gethostbyname\n");
        return 1;
    };

    addr.sin_family = AF_INET;
    addr.sin_addr.s_addr = *((unsigned long *) d_addr->h_addr);
    addr.sin_port = htons (110);
    if(SOCKET_ERROR == (connect(p, (sockaddr *) &addr, sizeof (addr))))
    {
        printf("Error in connect\n");
        return 1;
    } else
    {
        printf("соединились с pop.mail.ru\n");
    }

    //создаем 2й сокет для smtp
    s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    if(s == INVALID_SOCKET)
    {
        printf("Invalid socket\n");
    }
    d_addr = gethostbyname("smtp.mail.ru");
    if(d_addr == NULL)
    {
        printf("Error gethostbyname\n");
        return 1;
    };

    addr.sin_family = AF_INET;
    addr.sin_addr.s_addr = *((unsigned long *) d_addr->h_addr);
    addr.sin_port = htons (25);
    if(SOCKET_ERROR == (connect(s, (sockaddr *) &addr, sizeof (addr))))
    {
        printf("Error in connect\n");
        return 1;
    } else
    {
        printf("соединились c smtp.mail.ru\n");
    }
    recv(p, rec, sizeof(rec), 0);
    printf("%s\n",rec);
    memset(rec, 0, sizeof(rec));
    //авторизуемся на pop
    strcpy(rec,"USER [email protected]\r\n");
    send(p, rec, strlen(rec),0);
    printf("%s\n",rec);;
    recv(p, rec, sizeof(rec), 0);
    printf("%s\n",rec);

    strcpy(rec,"PASS somePass\r\n");
    send(p, rec, strlen(rec), 0);
    printf("%s\n",rec);
    recv(p, rec, sizeof(rec), 0);
    printf("%s\n",rec);
    memset(rec, 0, sizeof(rec));
    //пробуем отправить сообщение
    strcpy(rec, "HELO smtp.mail.ru\r\n");
    send(s, rec, strlen(rec), 0);
    printf("%s\n",rec);
    recv(s, rec, sizeof(rec), 0);
    printf("%s\n",rec);
    memset(rec, 0, sizeof(rec));

    strcpy(rec, "MAIL FROM:[email protected]\r\n");
    send(s, rec, strlen(rec), 0);
    printf("%s\n",rec);
    recv(s, rec, sizeof(rec), 0);
    printf("%s\n",rec);
    memset(rec, 0, sizeof(rec));

    strcpy(rec, "RCPT TO:[email protected]\r\n");
    send(s, rec, strlen(rec), 0);
    printf("%s\n",rec);
    recv(s, rec, sizeof(rec), 0);
    printf("%s\n",rec);
    memset(rec, 0, sizeof(rec));

    strcpy(rec, "DATA\r\n");
    send(s, rec, strlen(rec), 0);
    printf("%s\n",rec);
    recv(s, rec, sizeof(rec), 0);
    printf("%s\n",rec);
    memset(rec, 0, sizeof(rec));

    strcpy(rec, "from:[email protected]\r\nto:[email protected]\r\nsubject:Hello\r\nHello !!\r\n.\r\n");
    send(s, rec, strlen(rec), 0);
    printf("%s\n",rec);
    recv(s, rec, sizeof(rec), 0);
    printf("%s\n",rec);
    memset(rec, 0, sizeof(rec));

    strcpy(rec, "QUIT\r\n");
    send(s, rec, strlen(rec), 0);
    printf("%s\n",rec);
    recv(s, rec, sizeof(rec), 0);
    printf("%s\n",rec);
    closesocket(p);
    closesocket(s);
    WSACleanup();

Собственно, никаких ошибок не выходит, но письма на почте нет.
PM MAIL   Вверх
GrayCardinal
Дата 20.5.2011, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фигасе
****


Профиль
Группа: Завсегдатай
Сообщений: 3039
Регистрация: 9.11.2003

Репутация: 3
Всего: 58



"HELO" по идее первым шлется smile Вообще - лог в студию smile


--------------------
PM MAIL WWW   Вверх
Alca
Дата 20.5.2011, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 1
Всего: 50



попробуй для начала с телнета отправить



--------------------
PM WWW ICQ Skype Jabber   Вверх
tim91
Дата 21.5.2011, 20:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 5.4.2011

Репутация: -1
Всего: -1



пробую, не получается, варианты из интернета не работают
PM MAIL   Вверх
tim91
Дата 21.5.2011, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 5.4.2011

Репутация: -1
Всего: -1



можно отправить не используя smtp  вручную? есть какие-нибудь свободные библиотеки?
PM MAIL   Вверх
scroollocker
Дата 14.7.2011, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.{--}.



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 17.9.2010

Репутация: нет
Всего: нет



ты забыл про AUTH LOGIN. На smtp.mail.ru без авторизации нельзя же отправлять почту

HELO => AUTH LOGIN => твой логин в base64 => пасс в base64



PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.1288 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.