Gå til innhold

winsock, smtp trøbbel


Anbefalte innlegg

Hum, har støtt på et lite problem. Skulle lage et program som kunne sende e-mail winsocken vra helt grei og det funka. Men når jeg skulle ha programmet til og sette inn e-mailen til senderen ble det kluss.

 

Utdrag fra koden:

 

        if( SOCKET_ERROR != connect(Client, (LPSOCKADDR)&ServerInfo, sizeof(ServerInfo)) )

        {

            char Data[512];

  char epost[80];

            strcpy_s( Data, "HELO server\r\n"  );

            strcat_s( Data, "MAIL FROM:<[email protected]>\r\n" );

    sprintf_s( epost,"RCPT TO: %s \r\n", emailt);

  strcat_s( Data, epost );

            strcat_s( Data, "DATA\r\n" );

  strcat_s( Data, "Subject: Test\r\n\r\n" ); // To ganger (RFC 882)

            strcat_s( Data, "The text bla, bla, bla, bla...  \r\n" );

            strcat_s( Data, "\r\n.\r\n" );

            strcat_s( Data, "QUIT \r\n" );

 

 

 

Som dere ser ovenfor så laget jeg en sprintf_s som skal lese inn innholdet fra en string (emalt som er der adressen blir lagret) som senere skal sende den vidre ned i scriptet slik at den blir tastet inn. Men det funker ikke helt som jeg hadde tenkt. Det står nemmelig at det ikk er noen verdi i eposten det kommer fram med RCPT og alt men selve stringen blir ikke lest inn den har en verdi på NULL :hmm:

 

Så er det noen som har en ide på hva problemet kan være?

Lenke til kommentar
Videoannonse
Annonse
"som senere skal sende den vidre ned i scriptet slik at den blir tastet inn" -- Hva mener du egentlig med dette?

6311798[/snapback]

 

Med det så mener jeg at tidligere i programmet har jeg laget en string som heter emailt i denne så blir e-posten tastet inn slik at det skal være mulig Her:

 

sprintf_s( epost,"RCPT TO: %s \r\n", emailt);

  strcat_s( Data, epost );

 

 

Og legge den inn i en setning i winsocken slik at komandoen blir da:

RCPT TO: eposten som er tastet inn

 

Så problemet er da her og få en string inn i winsock programmet.

Hvis det er andre mulighter for og få en string ned i winsock så godtas det :)

Lenke til kommentar

Gjør heller noe ala

 

string makeSMTPConversation(const string& szSender, 
                           const string& szReceiver,  
                           const string& szSubject,
                           const string& szBody)
{
 const char* _HELO = "HELO ";
 const char* _MAILFROM = "MAIL FROM: ";
 const char* _RCPTTO = "RCPT TO: ";
 const char* _DATA = "DATA";
 const char* _SUBJECT = "Subject: ";
 const char* _ENDDATA = ".";
 const char* _QUIT = "QUIT";
 const char* _TERM = "\r\n";

 std::ostringstream sMail;
 
 sMail << _HELO << "mememe.com" << _TERM
       << _MAILFROM << szSender << _TERM
       << _RCPTTO << szReceiver << _TERM
       << _DATA << _TERM
       << _SUBJECT << szSubject << _TERM 
       << _TERM
       << szBody << _TERM 
       << _TERM
       << _ENDDATA << _TERM
       << _QUIT << _TERM;
       
 return sMail.str();
}

Lenke til kommentar

det der er helt vanlig standard C++ og krever ingen forklaring i det hele tatt .. (jeg tuller ikke, og er heller ikke "overlegen" ellernoeslikt) .. nybegynnerboka du sitter med forklarer dette (om du ikke har hatt skikkelig uflax og skaffet en megadårlig en)

 

`std::stringstream' gjør det enklere å jobbe med strenger (edit: og/eller "data") i C++:

#include <iostream>
#include <sstream>

using namespace std;

int main()
{
 stringstream ss;
 unsigned int x = 6;
 
 ss << "Lars fyller " << 26 << " om " << x << " dager." << endl;

 cout << ss.str();
 return 0;
}

 

"Thinking in C++" @ google har noen kapitler om streams og stringstream

Endret av lnostdal
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...