Problem beim versenden einer Email



  • Tolga schrieb:

    PS: Aber du hast sicher nciht ganz Unrecht. Die sache mitm Linux/Windows-Unterschied was das verlangen nach '\n\r' angeht ist mir auhc bekannt.

    <erbsenzähl>Nimm lieber '\r\n', es sei denn du hast einen Mac. 🙂 </>

    Das mit den unterschiedlichen Zeilenumbrüchen ist nur bei ASCII-Text-Dateien entscheidend. Die werden, wenn der Editor unfähig ist, auf einem anderen System als dem erzeugenden falsch dargestellt.
    Deswegen gibt es z.B bei FTP den Text-Modus zum Übertragen von Dateien. Dabei sagt der Client, welche Umbrüche er gerne hätte, und der Server kümmert sich dann ums konvertieren.

    Bei allgemein anerkannten Protokollen wie SMTP wäre es aber etwas umständlich und fehleranfällig, wenn ein Server alle Arten von Zeilenumbrüchen akzeptieren und konvertieren müsste. Deswegen hat man sich halt auf '\r\n' geeinigt.



  • In der RFC steht ganz klar "\r\n", vollkommen egal welches OS.

    Jeder SMTP-Server, der sich nicht an die RFC821 hält, ist entweder von Microsoft oder kein SMTP-Server.

    Basta. 😃



  • Hy Leute,

    ich habe versucht den Quelltext zu ompilieren, aber ich bekomme immer irgendwelche Linker-Errors.

    Hier sind die Meldungen:

    Compiler: Default compiler
    Führt g++.exe... aus
    g++.exe "C:\Dokumente und Einstellungen\Lippy\Desktop\mail.cpp" -o "C:\Dokumente und Einstellungen\Lippy\Desktop\mail.exe" -I"C:\Dev-Cpp\include\c++\3.3.1" -I"C:\Dev-Cpp\include\c++\3.3.1\mingw32" -I"C:\Dev-Cpp\include\c++\3.3.1\backward" -I"C:\Dev-Cpp\lib\gcc-lib\mingw32\3.3.1\include" -I"C:\Dev-Cpp\include" -L"C:\Dev-Cpp\lib"
    C:\DOKUME1\Lippy\LOKALE1\Temp/ccg9baaa.o(.text+0x191f):mail.cpp: undefined reference to WSAStartup@8' C:\\DOKUME~1\\Lippy\\LOKALE~1\\Temp/ccg9baaa.o(.text+0x1971):mail.cpp: undefined reference tosocket@12'
    C:\DOKUME1\Lippy\LOKALE1\Temp/ccg9baaa.o(.text+0x19ac):mail.cpp: undefined reference to WSACleanup@0' C:\\DOKUME~1\\Lippy\\LOKALE~1\\Temp/ccg9baaa.o(.text+0x19d0):mail.cpp: undefined reference toinet_addr@4'
    C:\DOKUME1\Lippy\LOKALE1\Temp/ccg9baaa.o(.text+0x19e5):mail.cpp: undefined reference to htons@4' C:\\DOKUME~1\\Lippy\\LOKALE~1\\Temp/ccg9baaa.o(.text+0x1a0f):mail.cpp: undefined reference toconnect@12'
    C:\DOKUME1\Lippy\LOKALE1\Temp/ccg9baaa.o(.text+0x1a40):mail.cpp: undefined reference to WSACleanup@0' C:\\DOKUME~1\\Lippy\\LOKALE~1\\Temp/ccg9baaa.o(.text+0x1ad9):mail.cpp: undefined reference tosend@16'

    C:\DOKUME1\Lippy\LOKALE1\Temp/ccg9baaa.o(.text+0x1bbf):mail.cpp: undefined reference to send@16' C:\\DOKUME~1\\Lippy\\LOKALE~1\\Temp/ccg9baaa.o(.text+0x1c5e):mail.cpp: undefined reference tosend@16'
    C:\DOKUME1\Lippy\LOKALE1\Temp/ccg9baaa.o(.text+0x1d03):mail.cpp: undefined reference to send@16' C:\\DOKUME~1\\Lippy\\LOKALE~1\\Temp/ccg9baaa.o(.text+0x1dd6):mail.cpp: undefined reference tosend@16'
    C:\DOKUME1\Lippy\LOKALE1\Temp/ccg9baaa.o(.text+0x1e7d):mail.cpp: more undefined references to `send@16' follow

    Ausführung beendet

    Können die Fehler vielleicht auch an einer header Datei liegen???

    Lippy



  • Du hast vermutlich vergessen ws2_32.lib zu linken.



  • Hy Leute,

    wie linkt man den diese Bibliothek???

    Etwa so: #pragma comment (lib, "ws2_32.lib") ???

    Lippy



  • lippy schrieb:

    Hy Leute,

    wie linkt man den diese Bibliothek???

    Etwa so: #pragma comment (lib, "ws2_32.lib") ???

    Lippy

    Ja.

    Wenn du das einfach ausprobiert hättest, hätte sich deine Frage erübrigt. 🙄 😡



  • lippy schrieb:

    Hy Leute,

    wie linkt man den diese Bibliothek???

    Etwa so: #pragma comment (lib, "ws2_32.lib") ???

    Lippy

    Das Visual Studio kann das so, ja.

    Ob Dein Compiler das auch so versteht, weiß ich nicht. Das wird die Dokumentation Deines Compilers sicherlich klären können.



  • Hier ist mein Quellcode:

    #include <iostream> 
    #include <windows.h> 
    #include "winsock2.h"
    
    #pragma comment (lib, "ws2_32.lib")
    
    using namespace std; 
    
    int main() 
    { 
      //---------------------- 
      // Initialize Winsock 
      WSADATA wsaData; 
      int iResult = WSAStartup(MAKEWORD(2,2), &wsaData); 
      if (iResult != NO_ERROR) 
        cout << "Konnte Winsock nicht initialisieren" << endl; 
    
      //---------------------- 
      // Create a SOCKET for connecting to server 
      SOCKET ConnectSocket; 
      ConnectSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); 
      if (ConnectSocket == INVALID_SOCKET) { 
        cout << "Konnte Socket nicht erstellen!" << endl; 
        WSACleanup(); 
        return 0; 
      } 
    
      //---------------------- 
      // The sockaddr_in structure specifies the address family, 
      // IP address, and port of the server to be connected to. 
      sockaddr_in clientService; 
      clientService.sin_family = AF_INET; 
      clientService.sin_addr.s_addr = inet_addr("213.203.xxx.xxx"); 
      clientService.sin_port = htons(25); 
    
      //---------------------- 
      // Connect to server. 
      if (connect(ConnectSocket, (SOCKADDR*) &clientService, sizeof(clientService) ) == SOCKET_ERROR) { 
        cout << "Konnte Verbindung nicht herstellen" << endl; 
        WSACleanup(); 
        return 0; 
      } 
    
      cout << "Verbind zum Server steht!" << endl; 
      //WSACleanup(); 
    
      char sendData[1024] = "HELO bla\n"; 
      send(ConnectSocket, sendData, strlen(sendData), 0); 
      cout << "Folgendes wurde gesendet: \"" << sendData << "\"."; 
    
      Sleep(500); 
    
      char sendData0[1024] = "MAIL FROM:<board@nuxxxx.de>\n"; 
      send(ConnectSocket, sendData0, strlen(sendData0), 0); 
      cout << "Folgendes wurde gesendet: \"" << sendData0 << "\"."; 
    
      Sleep(500); 
    
      char sendData1[1024] = "RCPT TO:<webmaster@nuxxxx.de>\n"; 
      send(ConnectSocket, sendData1, strlen(sendData1), 0); 
      cout << "Folgendes wurde gesendet: \"" << sendData1 << "\"."; 
    
      Sleep(500); 
    
      char sendData2[1024] = "DATA\n"; 
      send(ConnectSocket, sendData2, strlen(sendData2), 0); 
      cout << "Folgendes wurde gesendet: \"" << sendData2 << "\"."; 
    
      Sleep(500); 
    
      char sendData3[1024] = "Blah blah blah...\n"; 
      send(ConnectSocket, sendData3, strlen(sendData3), 0); 
      cout << "Folgendes wurde gesendet: \"" << sendData3 << "\"."; 
    
      Sleep(500); 
    
      char sendData4[1024] = ".\n"; 
      send(ConnectSocket, sendData4, strlen(sendData4), 0); 
      cout << "Folgendes wurde gesendet: \"" << sendData4 << "\"."; 
    
      return 0; 
    }
    

    Ich benutze den Bloodsheet Dev C++!

    Aber die Fehlermeldungen lauten bei den verschiedensten Programmen die was mit mailen zu tun haben:

    Compiler: Default compiler
    Führt g++.exe... aus
    g++.exe "C:\Dokumente und Einstellungen\Lippy\Desktop\mail.cpp" -o "C:\Dokumente und Einstellungen\Lippy\Desktop\mail.exe" -I"C:\Dev-Cpp\include\c++\3.3.1" -I"C:\Dev-Cpp\include\c++\3.3.1\mingw32" -I"C:\Dev-Cpp\include\c++\3.3.1\backward" -I"C:\Dev-Cpp\lib\gcc-lib\mingw32\3.3.1\include" -I"C:\Dev-Cpp\include" -L"C:\Dev-Cpp\lib"
    C:\DOKUME1\Lippy\LOKALE1\Temp/ccyIbaaa.o(.text+0x191f):mail.cpp: undefined reference to WSAStartup@8' C:\\DOKUME~1\\Lippy\\LOKALE~1\\Temp/ccyIbaaa.o(.text+0x1971):mail.cpp: undefined reference tosocket@12'
    C:\DOKUME1\Lippy\LOKALE1\Temp/ccyIbaaa.o(.text+0x19ac):mail.cpp: undefined reference to WSACleanup@0' C:\\DOKUME~1\\Lippy\\LOKALE~1\\Temp/ccyIbaaa.o(.text+0x19d0):mail.cpp: undefined reference toinet_addr@4'
    C:\DOKUME1\Lippy\LOKALE1\Temp/ccyIbaaa.o(.text+0x19e5):mail.cpp: undefined reference to htons@4' C:\\DOKUME~1\\Lippy\\LOKALE~1\\Temp/ccyIbaaa.o(.text+0x1a0f):mail.cpp: undefined reference toconnect@12'
    C:\DOKUME1\Lippy\LOKALE1\Temp/ccyIbaaa.o(.text+0x1a40):mail.cpp: undefined reference to WSACleanup@0' C:\\DOKUME~1\\Lippy\\LOKALE~1\\Temp/ccyIbaaa.o(.text+0x1ad9):mail.cpp: undefined reference tosend@16'

    C:\DOKUME1\Lippy\LOKALE1\Temp/ccyIbaaa.o(.text+0x1bbf):mail.cpp: undefined reference to send@16' C:\\DOKUME~1\\Lippy\\LOKALE~1\\Temp/ccyIbaaa.o(.text+0x1c5e):mail.cpp: undefined reference tosend@16'
    C:\DOKUME1\Lippy\LOKALE1\Temp/ccyIbaaa.o(.text+0x1d03):mail.cpp: undefined reference to send@16' C:\\DOKUME~1\\Lippy\\LOKALE~1\\Temp/ccyIbaaa.o(.text+0x1dd6):mail.cpp: undefined reference tosend@16'
    C:\DOKUME1\Lippy\LOKALE1\Temp/ccyIbaaa.o(.text+0x1e7d):mail.cpp: more undefined references to `send@16' follow

    Ausführung beendet

    Ich bin echt am verzweifeln!

    Lippy



  • Beim g++ kann man IIRC auf der Kommandozeile -lws2_32 angeben. Aber ich nehme stark an, dass deine IDE dafür eine Einstellung anbietet.

    -> Andere Compiler.



  • Dieser Thread wurde von Moderator/in cd9000 aus dem Forum WinAPI in das Forum Andere Compiler verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Anmelden zum Antworten