CStringArray mit "\r\n" füllen?



  • Hallo Community,
    es gibt hier im Forum mehrere Beispiele die mit WinSock Daten vesenden. Alle benutzen "normale" Arrays um z.B. Daten zu speichern die an den SMTP Server gesendet werden, ich wollte ein CStringArray benutzen und mit dem SMTP komunicieren, irgend wie geht das nicht 🙂 , jedes mal wenn ich z.B. versuche "\r\n" an einen Befehl anzuhängen, wird er überschrieben und das Item bleibt leer!

    Bis jetzt immer:

    // diesen Teil meine ich:
    char  *acSMTP[] = { 
    					  "EHLO smtp.1und1.com\r\n",  // Dummy 
    					  "AUTH LOGIN\r\n",
    					  "benutzer\r\n",
    					  "pwd\r\n",
    					  "MAIL From: absender@absenderdom.com\r\n",     // Absender, 
    					  "RCPT To: ziel@zieldom.com\r\n",  // Empfänger, entsprechend anpassen   
    					  "DATA\r\n",   
    					  "From: <absender@absender.com>\r\nTo:<ziel@zieldom.com>\r\nSubject:Email Test-Mail mit smtp\r\n\r\n", 
    					  "Diese Mail wurde mit SMTP Funktionen versendet!!!\r\n.\r\n",   
    					  "QUIT\r\n" 
    					}; 
    //// weiter ....
    
    for(i = 0; i < 9; i++) 
    	{ 
    	  strcpy(command, acSMTP[i]); // [b]hier an command ein CStringArray übergeben????[/b]	
          printf("%s\n", command); 
    	  send(sock, command, lstrlen(command), 0); // Command senden 
    	  empfangen = recv(sock, acBuff, sizeof(acBuff), 0); 	
          acBuff[empfangen] = '\0'; // String terminieren 
    	} 
    
    	closesocket(sock); 
    	WSACleanup(); 
    	return 0; 
    	//getch();
    

    versuch:

    CStringArray csaSMTP;
    
    csaSMTP.Add(caBenutzerName + "\r\n"); // hier wird der Benutzername immer überschrieben und csaSMTP an dieser Stelle ist leer!  :rolleyes:  :confused:
    

    kann man den das nicht in ein CStringArray packen?
    mfg
    mirsad



  • Na mal abgesehen davon, das Du auf die Art keinerlei Sicherheit haben wirst, das eine Datenübertragung zustande kommt - da solltest Du schon auf Antworten reagieren und nicht einfach was losschicken - vielleicht ein paar Hinweise:
    (CStringArray).add() nimmt EIN ! neues Element auf
    Also besser werde vielleicht :

    ...
    csaSMTP.Add(CString(caBenutzerName + "\r\n"));
    

    obwohl das nicht ganz die feine Art ist 😃
    Nun dein

    char command[...]
    

    würde ich besser mit

    strcpy(command, acSMTP[i].c_str());
    

    befüllen, anderfalls ist ein Null-terminierter String nicht garantiert und dies brauchst´s für send() -- Ausnahme bei der Nutzdatenübertragung !!!



  • Hall rasi,
    veilen Dank für dein Beitrag, ich hab es so gellasen wie es war mit char[],
    es funktioniert und es läuft gut, war vieleicht dumm von mir überhaupt so was zu fragen, aber wer nicht fragt.....? 🙄
    Gruß
    Mirsad



  • strcpy hat da nichts verloren wenn man schon einen CString hat. CString ist NULL-Terminiert.


Anmelden zum Antworten