Hallo!
Hab da ein kleines Problem.
Ich brauche ein kleines Programm das mir eine Verbindung zu einem SMTP Server herstellt. Nun hab ich mir etwas gebastelt was soweit funktioniert - nur bei dem Punkt wo ich eine Mail mittels DATA versenden will klappts nicht mehr - ich denke es bleibt in Zeile 59 stehen und wartet auf eine Rückmeldung vom Server - die gibt es aber hier nicht.
Hat jemand eine Idee wie ich das Problem lösen kann?
Bin für jeden Vorschlag dankbar!
lg
Hier mein Code:
Alles anzeigen
Hab da ein kleines Problem.
Ich brauche ein kleines Programm das mir eine Verbindung zu einem SMTP Server herstellt. Nun hab ich mir etwas gebastelt was soweit funktioniert - nur bei dem Punkt wo ich eine Mail mittels DATA versenden will klappts nicht mehr - ich denke es bleibt in Zeile 59 stehen und wartet auf eine Rückmeldung vom Server - die gibt es aber hier nicht.
Hat jemand eine Idee wie ich das Problem lösen kann?
Bin für jeden Vorschlag dankbar!
lg
Hier mein Code:
Quellcode
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <netinet/in.h>
- #include <arpa/inet.h>
- #include <unistd.h>
- #include <stdlib.h>
- #include <stdio.h>
- #include <string.h>
- #define BUF 1024
- int main (int argc, char **argv) {
- int sock;
- char *buffer = malloc (BUF);
- struct sockaddr_in address;
- int size;
- int port;
- int con;
- // Überprüfung der Programmparameter
- if( argc < 3 ){
- printf("Usage: %s <address> <port>", *argv);
- exit(EXIT_FAILURE);
- }
- //Socket erzeugen
- printf("create socket...");
- sock = socket(AF_INET, SOCK_STREAM, 0);
- if(sock > 0)
- printf("OK\n");
- else{
- printf("failed\n");
- exit(0);
- }
- //zweites Argument in Integer konvertieren
- port = strtol(argv[2], NULL, 10);
- address.sin_family = AF_INET;
- address.sin_port = htons (port);
- inet_aton (argv[1], &address.sin_addr);
- // Verbindung zum Server herstellen
- printf("connect...");
- con = connect ( sock, (struct sockaddr *) &address, sizeof 45(address));
- if(con == 0){
- printf("OK\n");
- printf ("connected to %s on port %d \n\n", inet_ntoa 49(address.sin_addr), port);
- }
- else{
- printf("failed\n");
- exit(0);
- }
- do {
- //Ausgabe der Servernachricht
- size = recv(sock, buffer, BUF-1, 0);
- if( size > 0)
- buffer[size] = '\0';
- printf ("%s\n", buffer);
- //--------
- //Eingabe zum Server senden
- if (strcmp (buffer, "quit\n")) {
- printf ("> ");
- fgets (buffer, BUF, stdin);
- send(sock, buffer, strlen (buffer), 0);
- //--------
- }
- } while (strcmp (buffer, "quit\n") != 0);
- close (sock);
- return EXIT_SUCCESS;
- }