email verschicken über smtp



  • hi hab mit outlook meine mail abgerufen aber von einer anderen addy!!! muss smtp über port 25 gehn? was is esmtp???

    cu



  • esmtp - so meldet sich doch der postfix smtp-server oder nich ?



  • Also bei mir funzt das auch nicht! Kann mal jemand einen smtp-server und dessen IP nennen, mit dem http://www.c-plusplus.net/forum/viewtopic.php?t=61473&highlight=smtp funktioniert???



  • Was funzt denn nich ? - Prüf doch mal was der Server sagt - Der meldet sich normalerweise wenn er was nicht magt und die Mail nicht senden will...



  • Mein Quellcode:

    #include <windows.h>
    #include <winsock.h>
    #include <stdio.h>
    #include <conio.h>
    #include <mapi.h>

    int main()
    {
    struct sockaddr_in server;

    SOCKET sock;

    char buff[1024],
    command[1024];

    unsigned int empfangen,
    i;

    char *smtp[] = {
    "HELO mail.web.de\r\n", // Dummy
    "MAIL FROM:bennyvorwalder@web.de\r\n", // Absender
    "RCPT TO:BennyVorwalder@web.de\r\n", // Empfaenger
    "DATA\r\n",
    "FROM: bennyvorwalder@web.de\r\nTO: BennyVorwalder@web.de>\r\nSUBJECT: Eine Test-Mail\r\n",
    "Diese Mail wurde mit den Windows-Socket-Funktionen versendet!!!\r\n.\r\n",
    "QUIT\r\n"

    };

    short wVersionRequested;

    WSADATA wsaData;

    wVersionRequested = MAKEWORD (1, 1);

    WSAStartup (wVersionRequested, &wsaData);

    sock = socket( AF_INET, SOCK_STREAM, 0);

    server.sin_family = AF_INET;
    server.sin_port = htons(25);
    server.sin_addr.s_addr = inet_addr("217.72.192.178"); // Nur Dummy, im Proggi steht richtige Adresse

    connect(sock, (struct sockaddr 😉 &server, sizeof(struct sockaddr_in));

    for(i = 0; i <= 6; i++)
    {
    strcpy(command, smtp[i]);
    printf("%s\n", command);
    send(sock, command, lstrlen(command), 0); // Command senden
    empfangen = recv(sock, buff, sizeof(buff), 0); // Antwort empfangen muß nicht unbedingt sein
    printf("%s\n\n", buff);
    buff[empfangen] = '\0'; // String terminieren
    }

    closesocket(sock);
    WSACleanup();
    getch();
    return 0;
    }

    Und dass was mail.web.de sagt:

    HELO mail.web.de

    220 mailgate2.dlan.cinetic.de ESMTP Sendmail 8.12.10/8.12.10/WEBDE 0.6; Thu, 29
    Jan 2004 17:09:54 +0100

    MAIL FROM:bennyvorwalder@web.de

    250 mailgate2.dlan.cinetic.de Hello ACB127E4.ipt.aol.com [172.177.39.228], pleas
    ed to meet you
    4 +0100

    RCPT TO:BennyVorwalder@web.de

    250 2.1.0 bennyvorwalder@web.de... Sender ok
    pt.aol.com [172.177.39.228], pleased to meet you

    DATA

    550 5.7.1 BennyVorwalder@web.de... Relaying denied
    .com [172.177.39.228], pleased to meet you

    FROM: bennyvorwalder@web.de
    TO: BennyVorwalder@web.de>
    SUBJECT: Eine Test-Mail

    503 5.0.0 Need RCPT (recipient)
    . Relaying denied

    Diese Mail wurde mit den Windows-Socket-Funktionen versendet!!!
    .

    500 5.5.1 Command unrecognized: "FROM: bennyvorwalder@web.de"
    500 5.5.1 Command unrecognized: "TO: BennyVorwalder@web.de>"
    500 5.5.1 Command unrecognized: "SUBJECT: Eine Test-Mail"

    QUIT

    500 5.5.1 Command unrecognized: "Diese Mail wurde mit den Windows-Socket-Funktio
    nen versendet!!!"
    500 5.5.1 Command unrecognized: "."
    ommand unrecognized: "SUBJECT: Eine Test-Mail"



  • nimm das empfangen aus der while schleife raus (nach dem senden der DATA, empfängst du erst mal nichts bis du QUIT sendest... deswegen warscheinlich geht es nicht.) und ich glaube die "MAIL FROM" und "RCPT TO" da mussen die emailadressen in "<>" stehen also z.b. "MAIL FROM: test@test.de"

    mfg
    toom



  • "Relaying denied" - der web.de mailserver will wohl vorher noch deinen benutzernamen und passwort haben...



  • toom schrieb:

    nimm das empfangen aus der while schleife raus (nach dem senden der DATA, empfängst du erst mal nichts bis du QUIT sendest... deswegen warscheinlich geht es nicht.) und ich glaube die "MAIL FROM" und "RCPT TO" da mussen die emailadressen in "<>" stehen also z.b. "MAIL FROM: test@test.de"

    mfg
    toom

    hi toom! willst du die source von mir habn wo alles fix und fertig zum email versenden?? meld dich bei mir!!! man kann auch files mitschicken;-)

    cu!



  • Surfman schrieb:

    hi toom! willst du die source von mir habn wo alles fix und fertig zum email versenden??

    nein, ich habe lafenden code (incl. MIME). aber danke für dein angebot.



  • aso...dann schick mir mal deinen code bitte, mag mal schauen wie du das gelöst hast! an: surfman19@gmx.at
    thx

    cu



  • Genau! Und wenn du schon mal dabei bist/warst: nirsaja@web.de
    😃 😃



  • ist unterwegs...



  • @Surfman
    Kannst du mir das Prog. bitte auch schicken? BennyVorwalder@web.de



  • ok ich schicke;-) comments erwünscht;-)



  • bei so vielen nachfragen poste ich den code :

    #include <windows.h>  
    #include <winsock.h>
    
    #pragma comment (lib, "wsock32.lib")
    
    #define HELO_MAX	4
    
    BOOL	fHeloSenden (SOCKET) ;
    BOOL	fBodySenden (SOCKET) ;
    BOOL	fQuitSenden (SOCKET) ;
    
    int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow){  
    	struct sockaddr_in		server ;
    	SOCKET					sock ;
    	char					command[200],
    							buff[100],
    							szHost[] = "mail.gmx.net" ;
    	unsigned int			iFor,
    							iEmpfangen ;
    	short					wVersionRequested ;
    	WSADATA					wsaData ;
    	struct hostent			*he ;
    	ZeroMemory (&server, sizeof (sockaddr_in)) ;
    	wVersionRequested = MAKEWORD (1, 1) ;
    	WSAStartup (wVersionRequested, &wsaData) ;
    	if (!(he = gethostbyname (szHost))){
    		MessageBox (NULL, "gethostbyname", "Fehler", NULL) ;
    		return 1 ;
    	}
    	if (he->h_addrtype != AF_INET){
    		MessageBox (NULL, "AF_INET", "Fehler", NULL) ;
    		return 2 ;
    	}
    	if (!he->h_addr_list[0]){
    		MessageBox (NULL, "he->h_addr_list[0]", "Fehler", NULL) ;
    		return 3 ;
    	}   
    	server.sin_family = AF_INET ;
    	server.sin_port = htons (25) ;
    	server.sin_addr   = *(struct in_addr*) he->h_addr_list[0] ;
    	if ((sock = socket (PF_INET, SOCK_STREAM, 0)) == -1){
    		MessageBox (NULL, "socket", "Fehler", NULL) ;
    		return 4 ;
    	}
    	if (connect (sock, (struct sockaddr*) &server, sizeof (struct sockaddr)) < 0){
    		MessageBox (NULL, "connect", "Fehler", NULL) ;
    		return 5 ;
    	}
    	fHeloSenden (sock) ;
    	fBodySenden (sock) ;
    	fQuitSenden (sock) ;
    	closesocket (sock) ;
    	WSACleanup () ;
    	return 0 ;
    }
    
    BOOL fHeloSenden (SOCKET sock){
    	char			*smtp[] = {
    								"HELO tescik\r\n",
    								"MAIL FROM: <email@email.de>\r\n",
    								"RCPT TO: <email@email.de>\r\n",
    								"DATA\r\n",
    								"From: ich\r\nTo: ich\r\nSubject: Test\r\n"} ;
    	char			command[100],
    					buff[100] ;
    	unsigned int	iEmpfangen = 0,
    					iFor = 0 ;
    	for(iFor = 0; iFor <= HELO_MAX; iFor++){
    		strcpy (command, smtp[iFor]) ;
    		send (sock, command, lstrlen (command), 0) ;
    		if (iFor != HELO_MAX){
    			iEmpfangen = recv (sock, buff, sizeof (buff), 0) ;
    			buff[iEmpfangen] = '\0' ;
    			MessageBox (NULL, (LPTSTR) buff, "empfang", NULL) ;
    		}
    	}
    	return 0 ;
    }
    
    BOOL fBodySenden (SOCKET sock){
    	char			*smtp[] = {
    								"Mime-Version: 1.0\r\n",
    								"Content-Type: multipart/mixed; boundary=\"IstEineID\"\r\n\r\n",
    								"--IstEineID\r\n",
    								"Content-Type: text/plain; charset=\"iso-8859-1\"\r\n",
    								"Content-Transfer-Encoding: 7bit\r\n\r\n",
    								"Teil 1 der email\r\n",
    								"--IstEineID\r\n",
    								"Content-Type: text/plain; charset=\"US-ASCII\"\r\n\r\n",
    								"Teil 2 der email (so zu sagen anhang... hehehe)\r\n",
    								"--IstEineID--"} ;
    	char			command[100],
    					buff[100] ;
    	unsigned int	iEmpfangen = 0,
    					iFor = 0 ;
    	for(iFor = 0; iFor <= 9; iFor++){
    		strcpy (command, smtp[iFor]) ;
    		send (sock, command, lstrlen (command), 0) ;
    	}
    	return 0 ;
    }
    
    BOOL fQuitSenden (SOCKET sock){
    	char			*smtp[] = {
    							"\r\n.\r\n",
    							"QUIT\r\n",
    							"QUIT\r\n"} ;
    	char			command[100],
    					buff[100] ;
    	unsigned int	iEmpfangen = 0,
    					iFor = 0 ;
    	for(iFor = 0; iFor <= 2; iFor++){
    		strcpy (command, smtp[iFor]) ;
    		send (sock, command, lstrlen (command), 0) ;
    		iEmpfangen = recv (sock, buff, sizeof (buff), 0) ;
    		buff[iEmpfangen] = '\0' ;
    		MessageBox (NULL, (LPTSTR)buff, "empfang", NULL) ;
    	}
    	return 0 ;
    }
    

    mfg
    toom


Anmelden zum Antworten