Per Konsolen-C auf smtp Server zugreifen
-
Hi,
ich möchte gerne aus meinem Programm heraus auf smtp.web.de zugreifen. Ich habe es bereits probiert mit system() usw. mittels Telnet auf ihn zuzugreifen, aber das geht nicht, anscheinend weil system() Telnet nicht zur Konsole zählt oder so. Mit Socketprogrammierung kenn ich mich nicht aus, habt ihr vielleicht ein Beispielscode für mich, bzw. kann mir jemand den hier http://www.c-plusplus.net/forum/viewtopic.php?t=39503&start=10 irgendwie für windows konsole umschreiben?
Achja, hier noch mein Versuch;
//Testprogramm #include <string> #include <windows.h> using namespace std; int main() { string cmd; string user ="Tesperson"; string clipboard = "EIN TEST!"; //Hier wird später der wirkliche //clipboard Inhalt reingeschrieben cmd = "telnet"; system(cmd.c_str()); Sleep(1000); //Das laden brauch Zeit =) cmd = "open pop3.web.de 110"; system(cmd.c_str()); cmd = "user sagichnicht"; system(cmd.c_str()); cmd = "pass wuesstetihrwohlgern"; system(cmd.c_str()); cmd = "quit"; system(cmd.c_str()); cmd = " "; system(cmd.c_str()); cmd = "open smtp.web.de 25"; system(cmd.c_str()); cmd = "helo test.ed"; system(cmd.c_str()); cmd = "MAIL FROM: ich@web.de"; system(cmd.c_str()); cmd = "rcpt to: nixda@web.de"; system(cmd.c_str()); cmd = "subject: Zwischenablagenprogramm wurde ausgefuehrt =)"; system(cmd.c_str()); cmd = "Die Zwischenablage von "; cmd += user; cmd += " lautet: "; cmd += clipboard; system(cmd.c_str()); cmd = "."; system(cmd.c_str()); cmd = "quit"; system(cmd.c_str()); return 0; }
Ich bin für jede Antwort dankbar!!
mfg Thomas
-
hi
im grunde ist es nicht viel anders als dein link, außer das du hier:
http://www.c-worker.ch/
mal schaust, und die linux spezifischen dinge daraufhin ersetzt.zum anderen könntest du dir auch den cygwin ziehen, und unter windows den linux code nutzen.
so long
-
Das hat mir auf jeden Fall schonmal weitergeholfen, aber warum gibt es soviele Fehlermeldungen (vc++) wenn ich die winsock2.h includier?
#include <windows.h> #include <winsock2.h> // <----TAUSEND FEHLER #include <stdio.h> //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); }
Danke schonmal für bisherige Hilfe!#
+
mfg Thomas
-
hi
einfach die header umdrehen:
#include <winsock2.h> #include <stdio.h> #include <windows.h>
also windows nach winsock2
ansonsten:
vergiss nicht, bei "projekt->einstellungen->reiter linker-> die wsock32.lib dazuzuschreiben, sonst fehlen ihm die funktionsdefinitionen.viel spaß
-
VIELEN VIELEN DANK!!!!
mfg Thomas