Отправка электронных писем с использованием C

Я только начал изучать программирование сокетов, узнал о winsock и достиг некоторого прогресса. Мой вопрос в основном таков: я хочу отправлять электронные письма, что мне делать?

следует упомянуть:

  1. Я узнал об инициализации winsock. Порт SMTP (25). создание и подключение к сокетам успешно. Что мне теперь делать?!!! (Я здесь застрял)
  2. Мне не нужен готовый к работе код. Я хочу учиться. Итак, любые книги, документация, учебные пособия или рекомендации по статьям необходимы.
  3. Я знаю, что C сам ничего не знает о работе в сети, значит ли это, что мне нужно загрузить некоторые библиотеки? (Я использую VS2010, Windows 7)

Вот ссылки на страницы, которые я прочитал до сих пор:

базовое руководство по Winsock: http://msdn.microsoft.com/en-us/library/ windows / desktop / ms737629 (v = vs.85) .aspx

Я прочитал первые 14 страниц из руководства beej (не могу опубликовать ссылку, новые пользователи могут разместить не более двух гиперссылок)

I узнали о типах ( WSADATA , структура addrinfo , sockaddr , SOCKET ) и функциях ( WSAStartup () , WSACleanup () , getaddrinfo () , Завершение работы () , WSAGetLastError () , socket () , ...)

и я только что начал читать эту статью о SMTP http: // www.faqs.org/rfcs/rfc821.html

вот что я написал до сих пор:

#include 
#include 
#include 

#pragma comment(lib, "Ws2_32.lib") // Applications that use Winsock must be linked with the Ws2_32.lib library file.

#define HTTP_PORT "80"
#define SMTP_PORT "25"
#define HOSTNAME_PORT "101"

/*
All ports and web services names ( which are string aliases of the ports

 can be found here:
 %WINDIR%\system32\drivers\etc\services

 */

int main(void)
{
    WSADATA wsdata;
    int iresult, retval; //iresult : instant result
    SOCKET connect_socket;
    struct addrinfo *result, *ptr, hints;

    iresult = WSAStartup(MAKEWORD(2, 2), &wsdata);
    if(iresult != 0) printf("Initiation of Winsock succeeded.\n");
    else
    {
        printf("WinSock initialization failed..\n");
        WSACleanup();
        return 0;
    }

    if(LOBYTE(wsdata.wVersion) == 2 && HIBYTE(wsdata.wVersion) == 2) printf("winsock.dll is found.\n");
    else
    {
        printf("Can not find the required winsock.dll file.\n");
        WSACleanup();
        return 0;
    }

    ZeroMemory(&hints, sizeof(hints));
    hints.ai_family = AF_UNSPEC; // IPv4 or IPv6
    hints.ai_protocol = IPPROTO_TCP; // TCP connection ( full duplex )
    hints.ai_socktype = SOCK_STREAM; // Provides sequenced, reliable, two-way, connection-based byte streams

    connect_socket = socket(hints.ai_family, hints.ai_socktype, hints.ai_protocol);
    if(connect_socket == INVALID_SOCKET)
    {
        printf("Socket Creation failed..\n");
        WSACleanup();
        return 0;
    }
    else printf("Socket Creation Succeeded ..\n");
    WSACleanup();
    return 1;
}

я сбился с курса?

10
задан cha0site 2 February 2012 в 11:20
поделиться