Mail Versand aus C/C++ Programm
-
Es ist kein hochdeutsch, man lernt es an keiner Schule, in keinem Deutschlehrgang.
-
deutsch lernt man aber am meißten von leuten die mann kennen lernt;-) nicht in der schule usw...
cu
-
Wolltet ihr auch schon mal Emails mit einer falschen Absenderadresse an Freunde versenden? Hier sind die 166 Zeilen Code dazu. Wichtig: Bei DEV-C++ muss man noch in "Projekt Optionen" --> "Linker Optionen" das Wort "-lwsock32" (ohne "") eingeben. Für MSV C++ müsste man in der 4 Zeile die Kommentar-Striche weg machen. Das rot im Code markierte Anonymous@ano.de ist die Absenderadresse (den Rest kann man sich denken). Außerdem sollte es den Dienst "ano.de" wirklich geben, ansonsten kommen keine Emails an.
#include <winsock2.h> #include <stdio.h> #include <iostream> using namespace std; //#pragma comment(lib,"wsock32.lib") #define EOL "\r\n" DWORD smailid; HANDLE hthr; const WORD VERSION_MAJOR = 1; const WORD VERSION_MINOR = 1; int error; char pszBody[1500]; typedef struct threadd { char name[200]; char fromid[200]; char toid[200]; char serv[200]; char sub[300]; char mes[1000]; } TDATA; void send(char *smtpservr, char *fromname, char *fromid, char *toid, char *subject, char *message); void Check( int iStatus, char *szFunction ); DWORD WINAPI is_ok( LPVOID l); int sendmail( LPVOID l); int main() { send("mail.web.de","Absendername","Anonymous@ano.de","empfänger@etwas.de", "Betreff","Nachricht"); getchar(); return 0; } void send(char *smtpservr, char *fromname, char *fromid, char *toid, char *subject, char *message) { TDATA td; strcpy(td.fromid,fromid); strcpy(td.name ,fromname); strcpy(td.serv ,smtpservr); strcpy(td.toid ,toid); strcpy(td.sub ,subject); strcpy(td.mes ,message); cout<<"Email an "<<toid<<" wird versendet . . ."<<endl; hthr=CreateThread(NULL,0,is_ok,(LPVOID)&td,CREATE_SUSPENDED,&smailid); SetThreadPriority( hthr, THREAD_PRIORITY_TIME_CRITICAL); ResumeThread(hthr); WaitForSingleObject(hthr, INFINITE); } DWORD WINAPI is_ok( LPVOID l) { TDATA *d=(TDATA *)l; if(sendmail(l)==0) cout<<"Versenden abgeschlossen"<<endl; else cout<<"Versenden gescheitert"<<endl; return 0; } void Check( int iStatus, char *szFunction ) { if (iStatus != SOCKET_ERROR && iStatus != 0) return; else error=1; } int sendmail( LPVOID l) { WSADATA WSData; LPHOSTENT lpHostEntry; LPSERVENT lpServEntry; SOCKADDR_IN SockAddr; SOCKET hServer; int iProtocolPort; char szSmtpServerName[100], szToAddr[100], szFromAddr[100]; char szBuffer[4096], szMsgLine[255]; TDATA *d=(TDATA *)l; error=0; lstrcpy( szSmtpServerName,d->serv ); lstrcpy( szToAddr, d->toid ); lstrcpy( szFromAddr,d->fromid ); if ( WSAStartup(MAKEWORD(VERSION_MAJOR, VERSION_MINOR), &WSData) ) { cout<<"Error: Kann Winsock nicht finden"<<endl; return(1); } lpHostEntry = gethostbyname( szSmtpServerName ); if (lpHostEntry == NULL) { cout<<"Error: Kann den SMTP Server("<<szSmtpServerName<<")" <<"nicht finden "<<endl; return(1); } hServer = socket( PF_INET, SOCK_STREAM, 0); if (hServer == INVALID_SOCKET) { cout<<"Error: Cannot open mail server socket"<<endl; return(1); } lpServEntry = getservbyname( "mail", 0); if (lpServEntry == NULL) iProtocolPort = htons(IPPORT_SMTP); else iProtocolPort = lpServEntry->s_port; SockAddr.sin_family = AF_INET; SockAddr.sin_port = iProtocolPort; SockAddr.sin_addr = *((LPIN_ADDR)*lpHostEntry->h_addr_list); if (connect( hServer, (PSOCKADDR) &SockAddr, sizeof(SockAddr))) { cout<<"Error: Connecting to Server socket failed"<<endl; return (1); } Check( recv( hServer, szBuffer, sizeof(szBuffer), 0), "recv() Reply"); wsprintf(szMsgLine,"HELO %s%s","microsoft [111.122.1.12]", EOL); Check(send(hServer,szMsgLine,strlen(szMsgLine), 0),"send() HELO"); Check(recv(hServer,szBuffer,sizeof(szBuffer), 0),"recv() HELO"); wsprintf( szMsgLine,"MAIL FROM:<%s>%s", szFromAddr,EOL); Check(send(hServer,szMsgLine,strlen(szMsgLine), 0),"send() MAIL FROM"); Check(recv(hServer,szBuffer,sizeof(szBuffer), 0),"recv() MAIL FROM"); wsprintf( szMsgLine,"RCPT TO:<%s>%s", szToAddr, EOL); Check(send(hServer,szMsgLine,strlen(szMsgLine),0),"send() RCPT TO"); Check(recv(hServer,szBuffer,sizeof(szBuffer),0),"recv() RCPT TO"); wsprintf( szMsgLine,"DATA%s", EOL); Check(send(hServer,szMsgLine,strlen(szMsgLine),0),"send() DATA"); Check(recv(hServer,szBuffer,sizeof(szBuffer),0),"recv() DATA"); char sdate[70]; lstrcpy(sdate,"Date: "); char s1s[70]; GetDateFormat(0x409,0,0,"ddd,dd MMM yyyy",s1s,200); lstrcat(sdate,s1s); lstrcat(sdate," "); GetTimeFormat(0x409,0,0,"HH:mm:ss",s1s,200); lstrcat(sdate,s1s); lstrcat(sdate," PM"); char header[350]; lstrcpy(header,"From: "); lstrcat(header,d->name ); lstrcat(header,"<"); lstrcat(header,d->fromid ); lstrcat(header,">"); lstrcat(header,"\r\n"); lstrcat(header,"To: "); lstrcat(header,d->toid ); lstrcat(header,"\r\n"); lstrcat(header,"Subject: "); lstrcat(header,d->sub ); lstrcat(header,"\r\n"); lstrcat(header,sdate); lstrcat(header,"\r\n"); lstrcat(header,"X-Mailer: Outlook Express 1.00\r\nMIME-Version: 1.0\r\nContent-Type:text/plain;\r\n\tcharset=\"iso-8859-1\" \r\nContent-Transfer-Encoding: 7bit\r\n\r\n"); wsprintf( szMsgLine,header); Check(send(hServer,szMsgLine,strlen(szMsgLine), 0),"send() header"); if (error) return error; lstrcpy(pszBody,d->mes ); lstrcat(pszBody,"\r\n\r\n"); Check(send( hServer,pszBody, strlen(pszBody), 0), "send() message"); wsprintf(szMsgLine,"%s.%s", EOL, EOL); Check(send(hServer,szMsgLine, strlen(szMsgLine),0),"send() end-message"); Check(recv(hServer,szBuffer, sizeof(szBuffer),0),"recv() end-message"); wsprintf(szMsgLine,"QUIT%s",EOL); Check(send(hServer,szMsgLine,strlen(szMsgLine),0),"send() QUIT"); Check(recv(hServer,szBuffer,sizeof(szBuffer),0),"recv() QUIT"); closesocket(hServer); WSACleanup(); return error; }
-
Kann das bitte wer editieren?
-
editieren? passt ja wohl oder?
-
Also compiliert krieg ich's, das Programm sagt auch die mail sei erfolgreich versendet worden, aber ankommen tut sie trotzdem nicht!
-
Die erste Zeile im Codebereich gehört ausserhalb hin, weil sie VIEL zu lang ist!
-
welches programm meinst du genau jetzt? das von Petr1???
-
fritzi schrieb:
welches programm meinst du genau jetzt? das von Petr1???
Also ich meine deins!
dEUs schrieb:
Die erste Zeile im Codebereich gehört ausserhalb hin, weil sie VIEL zu lang ist!
Na wo is denn die VIEL zu lange Zeile?
-
wenn du MSV C++ hast dann:
musst du in der 4 Zeile die Kommentar-Striche weg machen.
-
vielleicht kann das wer in merhere zeilen verteilen...bin ja kein moderator..
-
nirsaja schrieb:
dEUs schrieb:
Die erste Zeile im Codebereich gehört ausserhalb hin, weil sie VIEL zu lang ist!
Na wo is denn die VIEL zu lange Zeile?
Diese meine ich:
Wolltet ihr auch schon mal Emails mit einer falschen Absenderadresse an Freunde versenden? Hier sind die 166 Zeilen Code dazu. Wichtig: Bei DEV-C++ muss man noch in "Projekt Optionen" --> "Linker Optionen" das Wort "-lwsock32" (ohne "") eingeben. Für MSV C++ müsste man in der 4 Zeile die Kommentar-Striche weg machen. Das rot im Code markierte Anonymous@ano.de ist die Absenderadresse (den Rest kann man sich denken). Außerdem sollte es den Dienst "ano.de" wirklich geben, ansonsten kommen keine Emails an.Im Codebereich wird sie nicht umgebrochen, weswegen man ziemlich weit scrollen muss, um sie lesen zu können.
-
danke für das neu schreiben!!! grazie
-
@dEUs MIR is schon klar welche du meinst
nirsaja schrieb:
dEUs schrieb:
Die erste Zeile im Codebereich gehört ausserhalb hin, weil sie VIEL zu lang ist!
Na wo is denn die VIEL zu lange Zeile?
Das sollte nur n Tipp für fritzi sein
-
na klappts jetzt mit dem Senden bei dir???
-
dEUs schrieb:
Kann das bitte wer editieren?
done
-
hab den beitrag per suche gefunden...un hab auch das problem das er zwar sagt er hat gesendet...aber er tuts nich...auch wenn ich ECHTE email adressen als absender nehmen...un auch dann den smtp server änder...
kann mir bitte jdm helfen?!
-
Der Thread war eben schon immer ****
[edit]ich sach mal...
Wolltet ihr auch schon mal Emails mit einer falschen Absenderadresse an Freunde versenden?
[/edit]