Envoyer des emails en utilisant C

J'ai juste commencé à apprendre à propos programmation socket et appris à propos de winsock et réalisé certains progrès. ma question est en gros: je veux envoyer des e-mails, que dois-je faire?

points à mentionner:

  1. J'ai appris à propos de l'initialisation de winsock. Port SMTP (25). la création et la connexion des sockets avec succès. Que dois-je faire maintenant?!!! (Je suis coincé ici)
  2. Je ne veux pas d'un prêt au travail code. Je veux apprendre. Donc, tous les livres, de la documentation, des tutoriels ou des articles, des recommandations sont nécessaires.
  3. Je sais que C lui-même ne sait rien sur la mise en réseau, est-ce que je dois télécharger un certain nombre de bibliothèques? (Je suis à l'aide de VS2010, Windows 7)

Voici les liens vers les pages que j'ai lu jusqu'à présent:

de base winsock guide: http://msdn.microsoft.com/en-us/library/windows/desktop/ms737629(v=vs. 85).aspx

J'ai lu les 14 pages de beej guide (ne peux pas poster le lien, les nouveaux utilisateurs ne pouvez envoyer un maximum de deux hyperliens)

J'ai appris sur les types ( WSADATAaddrinfo structuresockaddrSOCKET ) et de fonctions ( WSAStartup()WSACleanup()getaddrinfo()Shutdown()WSAGetLastError()socket()... )

et je viens de commencer la lecture de cet article sur SMTP http://www.faqs.org/rfcs/rfc821.html

voici ce que j'ai écrit jusqu'à maintenant:

#include <stdio.h>
#include <WinSock2.h>
#include <WS2tcpip.h>

#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;
}

suis-je bien entendu?

source d'informationauteur joker