tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
14
ZUGRIFFE
361
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von MSVCplusplus
    MSVCplusplus MSVCplusplus ist offline Mitglied Brokat
    Registriert seit
    Dec 2010
    Ort
    Hessen
    Beiträge
    336
    Hallo ich möchte gerne ein programm schreiben oder quellcode haben das eine email versendet ich habe schon den link gehabt:

    http://www.online-tutorials.net/netz...s-t-18-23.html

    aber der funktioniert bei mir nicht ich habe alles richtig gemacht auch mailadresse absender alles!
    Mein mailprogramm: Windows Mail (nicht Windows live Mail!!)
    Ich verwende MSVC++
    OS:Windows Vista
    Hoffe das sind alle angaben

    Danke schonmal im Voraus!
     

  2. #2
    Crash Kid Crash Kid ist offline Mitglied Gold
    Registriert seit
    Jan 2009
    Beiträge
    147
    Um eine Mail versenden zu können musst du dich erstmal mit dem SMTP Protokoll auseinander setzen.
    Wenn du das kennst, dann kannst du selbst die Kommunikation mit dem Mailserver schreiben und brauchst keine fertigen Funktionen die du nicht kapierst. Brauchst allerdings noch Kentnisse in Winsock. Also Windows-Sockets. Weiß nicht wieviel du dich schon in der Netztwerk-Programmierung auskennst.
    Falls du keine Ahung von dem allen hast, empfehle ich dir erstmal bei NULL anzufangen. Richtig C/C++ programmieren, Netzwerkprogrammierung (Winsock) und dann des SMTP-Protokoll. Ich kann dir dabei gerne helfen, da ich selbst schon einen Mailclient komplett selbst geschrieben habe, ohne irgendwelche fertigen Funktionen oder Bibliotheken.

    grüße
     
    Wenn meine Antwort nützlich bzw. hilfreich war, würde ich mich sehr über eine Bewertung bzw. ein Danke sehr freuen.

    Danke euch


    Programmiere in C, C++ auf Windows XP, Vista und Windows 7
    Spezialisiert auf Netzwerkprogrammierung, WinAPI uvm.

  3. #3
    Avatar von MSVCplusplus
    MSVCplusplus MSVCplusplus ist offline Mitglied Brokat
    Registriert seit
    Dec 2010
    Ort
    Hessen
    Beiträge
    336
    das wäre nett wenn du mir hilfst
    Danke
    aber hast du nicht einen fertigen code****
     

  4. #4
    Crash Kid Crash Kid ist offline Mitglied Gold
    Registriert seit
    Jan 2009
    Beiträge
    147
    Wir sind hier um zu helfen, nicht um die arbeit von anderen zu machen.
    Wenn du beim Mailprogrammieren nicht weiter kommst, dann helfen wir dir gerne.
    ABER nicht wenn du keine Bock hast dich damit auseinander zu setzen und einfach nur Code willst, den du am Schluss nicht mal kapierst. Ich könnte dir in den Code auch einen Trojaner mit einprogrammieren und du würdest es vllt nicht mal merken und beim Kompilieren und Ausführen hättest du einen auf deinem System. So als Beispiel ...

    http://www.c-worker.ch/tuts.php
    Diese Tutorial weißt dich in die Socket-Programmierung ein. Ist sehr gut finde ich

    Und zum SMTP-Protokoll findest du auch sehr viel bei google...

    grüße
     
    Wenn meine Antwort nützlich bzw. hilfreich war, würde ich mich sehr über eine Bewertung bzw. ein Danke sehr freuen.

    Danke euch


    Programmiere in C, C++ auf Windows XP, Vista und Windows 7
    Spezialisiert auf Netzwerkprogrammierung, WinAPI uvm.

  5. #5
    Avatar von MSVCplusplus
    MSVCplusplus MSVCplusplus ist offline Mitglied Brokat
    Registriert seit
    Dec 2010
    Ort
    Hessen
    Beiträge
    336
    Das mit dem trojaner würd ich schon merken
    Ich fress mich mal durch dann meld ich mich nochmal....
    Danke Schön
     

  6. #6
    Avatar von MSVCplusplus
    MSVCplusplus MSVCplusplus ist offline Mitglied Brokat
    Registriert seit
    Dec 2010
    Ort
    Hessen
    Beiträge
    336
    Ich hab jetzt schon geschafft mit server und client zu arbeiten erste fortschritte
     

  7. #7
    Avatar von MSVCplusplus
    MSVCplusplus MSVCplusplus ist offline Mitglied Brokat
    Registriert seit
    Dec 2010
    Ort
    Hessen
    Beiträge
    336
    ich hab jetzt ne frage an crash kid :

    ich hab den code als Client:

    Code :
    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
    144
    145
    
    #include <windows.h>
    #include <winsock2.h>
    #include <stdio.h>
     
    //Prototypen
    int startWinsock(void);
    long getAddrFromString(char* hostnameOrIp, SOCKADDR_IN* addr);
     
    int main(int argc, char** argv)
    {
      long rc;
      SOCKET s;
      SOCKADDR_IN addr;
      char buf[256];
     
      if(argc<2)
      {
        printf("Usage: sock <hostname oder ip des servers>\n");
        return 1;
      }
     
     
      // Winsock starten
      rc=startWinsock();
      if(rc!=0)
      {
        printf("Fehler: startWinsock, fehler code: %d\n",rc);
        return 1;
      }
      else
      {
        printf("Winsock gestartet!\n");
      }
     
      // Socket erstellen
      s=socket(AF_INET,SOCK_STREAM,0);
      if(s==INVALID_SOCKET)
      {
        printf("Fehler: Der Socket konnte nicht erstellt werden, fehler code: %d\n",WSAGetLastError());
        return 1;
      }
      else
      {
        printf("Socket erstellt!\n");
      }
     
      // Verbinden
      memset(&addr,0,sizeof(SOCKADDR_IN)); // zuerst alles auf 0 setzten
      addr.sin_family=AF_INET;
      addr.sin_port=htons(12345); // wir verwenden mal port 12345
      rc=getAddrFromString(argv[1],&addr);
      if(rc==SOCKET_ERROR)
      {
        printf("IP für %s konnte nicht aufgeloest werden\n", argv[1]);
        return 1;
      }
      else
      {
        printf("IP aufgeloest!\n");
      }
     
     
      rc=connect(s,(SOCKADDR*)&addr,sizeof(SOCKADDR));
      if(rc==SOCKET_ERROR)
      {
        printf("Fehler: connect gescheitert, fehler code: %d\n",WSAGetLastError());
        return 1;
      }
      else
      {
        printf("Verbunden mit 127.0.0.1..\n");
      }
     
     
      // Daten austauschen
      while(rc!=SOCKET_ERROR)
      {
        printf("\nZeichenfolge eingeben [max 256]: ");
        gets(buf);
        send(s,buf,strlen(buf),0);
        rc=recv(s,buf,256,0);
        if(rc==0)
        {
          printf("Server hat die Verbindung getrennt..\n");
          break;
        }
        if(rc==SOCKET_ERROR)
        {
          printf("Fehler: recv, fehler code: %d\n",WSAGetLastError());
          break;
        }
        buf[rc]='\0';
        printf("\nServer antwortet: %s\n",buf);
      }
      closesocket(s);
      WSACleanup();
      return 0;
    }
     
    int startWinsock(void)
    {
      WSADATA wsa;
      return WSAStartup(MAKEWORD(2,0),&wsa);
    }
     
     
    long getAddrFromString(char* hostnameOrIp, SOCKADDR_IN* addr)
     
    {
      long rc;
      unsigned long ip;
      HOSTENT* he;
     
     
      /* Parameter prüfen */
      if(hostnameOrIp==NULL || addr==NULL)
        return SOCKET_ERROR;
     
     
      /* eine IP in hostnameOrIp ? */
      ip=inet_addr(hostnameOrIp);
     
      /* bei einem fehler liefert inet_addr den Rückgabewert INADDR_NONE */
      if(ip!=INADDR_NONE)
      {
        addr->sin_addr.s_addr=ip;
        return 0;
      }
      else
      {
        /* Hostname in hostnameOrIp auflösen */
        he=gethostbyname(hostnameOrIp);
        if(he==NULL)
        {
          return SOCKET_ERROR;
        }
        else
        {
          /*die 4 Bytes der IP von he nach addr kopieren */
          memcpy(&(addr->sin_addr),he->h_addr_list[0],4);
        }
        return 0;
     
      }
    }

    und server ist:

    Code :
    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
    
    #include <winsock2.h>
    #include <windows.h>
    #include <stdio.h>
     
    #pragma comment( lib, "ws2_32.lib")
     
    //Prototypen
    int startWinsock(void);
     
    int main()
    {
      long rc;
      SOCKET acceptSocket;
      SOCKET connectedSocket;
      SOCKADDR_IN addr;
      char buf[256];
      char buf2[300];
     
      // Winsock starten
      rc=startWinsock();
      if(rc!=0)
      {
        printf("Fehler: startWinsock, fehler code: %d\n",rc);
        return 1;
      }
      else
      {
        printf("Winsock gestartet!\n");
      }
     
      // Socket erstellen
      acceptSocket=socket(AF_INET,SOCK_STREAM,0);
      if(acceptSocket==INVALID_SOCKET)
      {
        printf("Fehler: Der Socket konnte nicht erstellt werden, fehler code: %d\n",WSAGetLastError());
        return 1;
      }
      else
      {
        printf("Socket erstellt!\n");
      }
     
      // Socket binden
      memset(&addr,0,sizeof(SOCKADDR_IN));
      addr.sin_family=AF_INET;
      addr.sin_port=htons(12345);
      addr.sin_addr.s_addr=ADDR_ANY;
      rc=bind(acceptSocket,(SOCKADDR*)&addr,sizeof(SOCKADDR_IN));
      if(rc==SOCKET_ERROR)
      {
        printf("Fehler: bind, fehler code: %d\n",WSAGetLastError());
        return 1;
      }
      else
      {
        printf("Socket an port 12345 gebunden\n");
      }
     
      // In den listen Modus
      rc=listen(acceptSocket,10);
      if(rc==SOCKET_ERROR)
      {
        printf("Fehler: listen, fehler code: %d\n",WSAGetLastError());
        return 1;
      }
      else
      {
        printf("acceptSocket ist im listen Modus....\n");
      }
     
      // Verbindung annehmen
      connectedSocket=accept(acceptSocket,NULL,NULL);
      if(connectedSocket==INVALID_SOCKET)
      {
        printf("Fehler: accept, fehler code: %d\n",WSAGetLastError());
        return 1;
      }
      else
      {
        printf("Neue Verbindung wurde akzeptiert!\n");
      }
     
      // Daten austauschen
      while(rc!=SOCKET_ERROR)
      {
        rc=recv(connectedSocket,buf,256,0);
        if(rc==0)
        {
          printf("Server hat die Verbindung getrennt..\n");
          break;
        }
        if(rc==SOCKET_ERROR)
        {
          printf("Fehler: recv, fehler code: %d\n",WSAGetLastError());
          break;
        }
        buf[rc]='\0';
        printf("Client sendet: %s\n",buf);
        sprintf(buf2,"Du mich auch %s",buf);
        rc=send(connectedSocket,buf2,strlen(buf2),0);
      }
      closesocket(acceptSocket);
      closesocket(connectedSocket);
      WSACleanup();
      return 0;
    }
     
     
     
    int startWinsock(void)
    {
      WSADATA wsa;
      return WSAStartup(MAKEWORD(2,0),&wsa);
    }

    Wenn ich jetzt server starte klapt alles dann starte ich client und der client schliesst sich sofort wieder aber der server wartet immernoch auf eine verbindung
    Was ist der fehler?
     

  8. #8
    Crash Kid Crash Kid ist offline Mitglied Gold
    Registriert seit
    Jan 2009
    Beiträge
    147
    Was kommt beim Client für ne Fehlermeldung? Vermutlich kann er irgendwas nicht initialisieren.
    Die Winsock oder bekommt keinen Socket mehr. Es gibt mehrere möglichkeiten.
     
    Wenn meine Antwort nützlich bzw. hilfreich war, würde ich mich sehr über eine Bewertung bzw. ein Danke sehr freuen.

    Danke euch


    Programmiere in C, C++ auf Windows XP, Vista und Windows 7
    Spezialisiert auf Netzwerkprogrammierung, WinAPI uvm.

  9. #9
    Avatar von MSVCplusplus
    MSVCplusplus MSVCplusplus ist offline Mitglied Brokat
    Registriert seit
    Dec 2010
    Ort
    Hessen
    Beiträge
    336
    das sehe ich nett der schliest sich sofort wieder das ist aber der original clien code von der seite die dur mir geschikt hast Teil 2 relativ unten:
    http://www.c-worker.ch/tuts/resolv.php
     

  10. #10
    Crash Kid Crash Kid ist offline Mitglied Gold
    Registriert seit
    Jan 2009
    Beiträge
    147
    Ich hab ihn gerade kompiliert und schau auch grad. Der macht bei mir des selbe.

    //Edit: hau die erste überprüfung von argc<2 raus.
     
    Wenn meine Antwort nützlich bzw. hilfreich war, würde ich mich sehr über eine Bewertung bzw. ein Danke sehr freuen.

    Danke euch


    Programmiere in C, C++ auf Windows XP, Vista und Windows 7
    Spezialisiert auf Netzwerkprogrammierung, WinAPI uvm.

  11. #11
    Avatar von MSVCplusplus
    MSVCplusplus MSVCplusplus ist offline Mitglied Brokat
    Registriert seit
    Dec 2010
    Ort
    Hessen
    Beiträge
    336
    Hast du vll ne lösung?
    Ich find kein problem
     

  12. #12
    Crash Kid Crash Kid ist offline Mitglied Gold
    Registriert seit
    Jan 2009
    Beiträge
    147
    Hab ich doch schon in meiner Antwort hinzugefügt.
    Du musst die erste überprüfung rausnehmen mit dem argc<2.
    Dann startet er den Winsock und erstellt erfolgreich nen Socket. Kommt bei mir zumindest.
     
    Wenn meine Antwort nützlich bzw. hilfreich war, würde ich mich sehr über eine Bewertung bzw. ein Danke sehr freuen.

    Danke euch


    Programmiere in C, C++ auf Windows XP, Vista und Windows 7
    Spezialisiert auf Netzwerkprogrammierung, WinAPI uvm.

  13. #13
    Avatar von MSVCplusplus
    MSVCplusplus MSVCplusplus ist offline Mitglied Brokat
    Registriert seit
    Dec 2010
    Ort
    Hessen
    Beiträge
    336
    sorry aber bei mir geht gerade garnichts mehr am rechner der hats sich eben aufgehängt
    das wegen hab ich gefragt
     

  14. #14
    Crash Kid Crash Kid ist offline Mitglied Gold
    Registriert seit
    Jan 2009
    Beiträge
    147
    OK. Also heute werd ich dir dann nicht mehr helfen können, aber morgen wieder. Du kannst mir auch per privater Nachricht deine MSN oder ICQ adresse geben. Dann gehts besser als über das Forum.

    grüße
     
    Wenn meine Antwort nützlich bzw. hilfreich war, würde ich mich sehr über eine Bewertung bzw. ein Danke sehr freuen.

    Danke euch


    Programmiere in C, C++ auf Windows XP, Vista und Windows 7
    Spezialisiert auf Netzwerkprogrammierung, WinAPI uvm.

  15. #15
    Avatar von MSVCplusplus
    MSVCplusplus MSVCplusplus ist offline Mitglied Brokat
    Registriert seit
    Dec 2010
    Ort
    Hessen
    Beiträge
    336
    So nach sehr langem rumprobieren mit CrashKid hat es dann auch noch geklappt!
    Jetzt hab ich auch noch GUI Drin mit WINAPI und nicht mehr DosBox!
    MFG
    PS Ich weis der Thread ist Alt aber naja musste halt sein
     
    Fehlermeldung bitte!
    Google - Dein Freund und Helfer

Ähnliche Themen

  1. Antworten: 1
    Letzter Beitrag: 22.02.10, 15:57
  2. Java Mail API / Spring Mail: Verwendung eines ganz normalen SMTP Servers?
    Von DarthShader im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 2
    Letzter Beitrag: 01.08.09, 15:55
  3. Antworten: 4
    Letzter Beitrag: 19.04.07, 20:57
  4. Antworten: 3
    Letzter Beitrag: 27.01.07, 18:35
  5. Antworten: 1
    Letzter Beitrag: 18.03.04, 20:53

Stichworte