Gå til innhold

Send mail fra commando line


Anbefalte innlegg

Morn, er helt her. Så dette er min første post. Har et problem, driver med c++ er helt ny og trenger hjelp har et program som jeg vill at skal sende en mail programmet starter i et cmd vindu. Dte jeg vill at det skal gjøre er at man bare fyller ut navn og tekst så sendes det til en mail som jeg har valgt den skal bl sendt med. Har vært og spurt rundt fått info om både smtp-libray og Winsoc. Iden min er kanskje dum og det har jeg fått høre før. Får heller være mener jeg nå. Den skal gjennomføres er mitt mål. Hvis noen har ider og komme med tutorials og andre saker tusen takk :)

Lenke til kommentar
Videoannonse
Annonse

du sier du har fått info om socket-programmering ("winsock", søk på beej) og smtp-biblioteker .. hva mer lurer du på?

 

edit:

om du skal kode din egen smtp-klient, søker du på "smtp rfc"

 

edit2:

om du er ny tipper jeg C og Beej-tutorialen (socket-programmering) er nok å sette seg inn i for en god stund fremover uansett .. :)

Endret av dayslepr
Lenke til kommentar
du sier du har fått info om socket-programmering ("winsock", søk på beej) og smtp-biblioteker ..    hva mer lurer du på?

 

edit:

om du skal kode din egen smtp-klient, søker du på "smtp rfc"

 

edit2:

om du er ny tipper jeg C og Beej-tutorialen (socket-programmering) er nok å sette seg inn i for en god stund fremover uansett .. :)

6115164[/snapback]

 

Ja, ny er jeg nok. Og sikkert nok og sette seg frem i er det, men jeg lurer på om du kanskje kunne vise meg et eksempel`?

Endret av cookiefi
Lenke til kommentar

bla bla bla jeg er n00b bla bla bla men jeg lurer på om du kanskje kunne vise meg et eksempel`?

6115348[/snapback]

Altså, folk har gitt deg mer enn nok informasjon til å komme i gang med å søke og finne informasjon. Jeg tror ikke noen her er interessert i å holde deg i hånden mens du snubler deg gjennom kode du ikke forstår uansett. Lær deg grunnleggende C-syntax. Les en tutorial på sockets. Gjør noen øvinger. Gjør litt research på SMTP. Og til sist, se punkt 1 i signaturen min. :thumbup:
Lenke til kommentar

OK, har fått en del hjelp nå. Men er det noen som kan se noen feil/forbedringer i denne koden?

 

#define WIN32_LEAN_AND_MEAN

 

#include <windows.h>

#include <winsock2.h>

#include <stdio.h>

#include <stdlib.h>

 

#pragma comment( lib, "wsock32.lib" );

 

// argc er antall argumenter slengt med programmet når det starter, argv[index] er selvfølgelig argumentet.

int main( int argc, char *argv[] )

{

    WSADATA sData;

    SOCKET Client;

 

    if( WSAStartup( 0x0202, &sData ) )

        return false;

 

    if( INVALID_SOCKET != (Client=socket( AF_INET, SOCK_STREAM, IPPROTO_TCP)) )

    {

        LPHOSTENT Host = gethostbyname( "mail.online.no" );

        SOCKADDR_IN ServerInfo;

        ServerInfo.sin_family = AF_INET;

        ServerInfo.sin_port    = htons( 25 );

        ServerInfo.sin_addr    = *((LPIN_ADDR)*Host->h_addr_list );

 

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

        {   

            char Data[512];

            strcpy( Data, "HELO online.no\r\n"  );

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

            strcat( Data, "RCPT TO:<[email protected]>\r\n" );

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

            strcat( Data, "Subject:E-postens tittel\r\n\r\n" ); // To ganger (RFC 882)

 

            strcat( Data, "Dette er da epostens innhold...\r\n" );

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

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

 

            if( -1 == send(Client, Data, sizeof(Data), 0) )

                printf( "Error sending mail" );

        }

        else

            printf( "connect error\n" );

    }

    else

        printf( "Socket error\n" );

 

    WSACleanup();

 

    return 0;

}

 

Måtte legge den som en QUOTE siden CODE bare klikka :hmm:

Lenke til kommentar
Er det noe feil med koden da? Under kjøring eller kompilering? Det er i enkelte tilfeller ganske greit å vite...

6120139[/snapback]

 

 

Det er vell egentlig ikke noe feil... Det kommer bare opp en del warnings og så sender den ikke mailen dit den skal... Den sender ikke i det hele tatt.

 

------ Rebuild All started: Project: Up and Go, Configuration: Debug Win32 ------

Deleting intermediate and output files for project 'Up and Go', configuration 'Debug|Win32'

Compiling...

main.cpp

c:\documents and settings\eier\mine dokumenter\mine ting\c++\up and go\up and go\main.cpp(19) : warning C4081: expected 'newline'; found ';'

c:\documents and settings\eier\mine dokumenter\mine ting\c++\up and go\up and go\main.cpp(175) : warning C4996: 'strcpy' was declared deprecated

        c:\programfiler\microsoft visual studio 8\vc\include\string.h(73) : see declaration of 'strcpy'

        Message: 'This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.'

c:\documents and settings\eier\mine dokumenter\mine ting\c++\up and go\up and go\main.cpp(176) : warning C4996: 'strcat' was declared deprecated

        c:\programfiler\microsoft visual studio 8\vc\include\string.h(78) : see declaration of 'strcat'

        Message: 'This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.'

c:\documents and settings\eier\mine dokumenter\mine ting\c++\up and go\up and go\main.cpp(177) : warning C4996: 'strcat' was declared deprecated

        c:\programfiler\microsoft visual studio 8\vc\include\string.h(78) : see declaration of 'strcat'

        Message: 'This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.'

c:\documents and settings\eier\mine dokumenter\mine ting\c++\up and go\up and go\main.cpp(178) : warning C4996: 'strcat' was declared deprecated

        c:\programfiler\microsoft visual studio 8\vc\include\string.h(78) : see declaration of 'strcat'

        Message: 'This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.'

c:\documents and settings\eier\mine dokumenter\mine ting\c++\up and go\up and go\main.cpp(179) : warning C4996: 'strcat' was declared deprecated

        c:\programfiler\microsoft visual studio 8\vc\include\string.h(78) : see declaration of 'strcat'

        Message: 'This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.'

c:\documents and settings\eier\mine dokumenter\mine ting\c++\up and go\up and go\main.cpp(181) : warning C4996: 'strcat' was declared deprecated

        c:\programfiler\microsoft visual studio 8\vc\include\string.h(78) : see declaration of 'strcat'

        Message: 'This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.'

c:\documents and settings\eier\mine dokumenter\mine ting\c++\up and go\up and go\main.cpp(182) : warning C4996: 'strcat' was declared deprecated

        c:\programfiler\microsoft visual studio 8\vc\include\string.h(78) : see declaration of 'strcat'

        Message: 'This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.'

c:\documents and settings\eier\mine dokumenter\mine ting\c++\up and go\up and go\main.cpp(183) : warning C4996: 'strcat' was declared deprecated

        c:\programfiler\microsoft visual studio 8\vc\include\string.h(78) : see declaration of 'strcat'

        Message: 'This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.'

Compiling manifest to resources...

Linking...

LINK : C:\Documents and Settings\Eier\Mine dokumenter\Mine Ting\C++\Up and Go\Debug\Up and Go.exe not found or not built by the last incremental link; performing full link

Embedding manifest...

Build log was saved at "file://c:\Documents and Settings\Eier\Mine dokumenter\Mine Ting\C++\Up and Go\Up and Go\Debug\BuildLog.htm"

Up and Go - 0 error(s), 9 warning(s)

========== Rebuild All: 1 succeeded, 0 failed, 0 skipped ==========

Lenke til kommentar
  • 2 uker senere...

for å gjøre det manuelt i cmd:

 

telnet mail.hotmail.com 25

helo

 

~~~~~Helo *ip* hilsen server

 

MAIL FROM: [email protected]

 

~~~~~250: [email protected]... Sender OK

 

RCPT TO: [email protected]

 

~~~~~~~250 [email protected]

 

DATA

~~~~~~~354 start data and end with .

i hate u, u dl to much porn.

.

~~~~~250 <blablabla spam spam IP*> Queed mail for delivery.

 

 

btw, "~~~~~" setningen skal liksom forestille de msg'ene som du får tilbake fra serveren.

 

sikkert ikke helt lovlig å spoofe mail. så tar ikke ansvar om noen driter seg ut på en eller annen måte.

Lenke til kommentar

Jeg testet koden din, og den fungerer som bare det herfra. Skrev om koden til å gå veien om mail.broadpark.no, da jeg sitter på en NextGenTel-linje, samt å vise responsen fra tjeneren, slik at du ser hva som evt. går feil.

 

Koden er da nøyaktig slik (med unntak av e-post-adressene):

 

#define WIN32_LEAN_AND_MEAN

 

#include <windows.h>

#include <winsock2.h>

#include <stdio.h>

#include <stdlib.h>

 

#pragma comment( lib, "wsock32.lib" );

 

// argc er antall argumenter slengt med programmet når det starter, argv[index] er selvfølgelig argumentet.

int main( int argc, char *argv[] )

{

    WSADATA sData;

    SOCKET Client;

 

    if( WSAStartup( 0x0202, &sData ) )

        return false;

 

    if( INVALID_SOCKET != (Client=socket( AF_INET, SOCK_STREAM, IPPROTO_TCP)) )

    {

        LPHOSTENT Host = gethostbyname( "mail.broadpark.no" );

        SOCKADDR_IN ServerInfo;

        ServerInfo.sin_family = AF_INET;

        ServerInfo.sin_port    = htons( 25 );

        ServerInfo.sin_addr    = *((LPIN_ADDR)*Host->h_addr_list );

 

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

        { 

            char Data[512];

            strcpy( Data, "HELO broadpark.no\r\n"  );

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

            strcat( Data, "RCPT TO:<[email protected]>\r\n" );

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

            strcat( Data, "Subject:E-postens tittel\r\n\r\n" ); // To ganger (RFC 882)

 

            strcat( Data, "Dette er da epostens innhold...\r\n" );

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

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

 

            if( -1 == send(Client, Data, sizeof(Data), 0) )

                printf( "Error sending mail" );

 

  char ret[1024];

  if ( -1 == recv(Client, ret, sizeof(ret), 0))

    printf("Error receiving response" );

  else

    printf("---<RESPONSE>---\n%s\n---</RESPONSE>---", ret);

        }

        else

            printf( "connect error\n" );

    }

    else

        printf( "Socket error\n" );

 

    WSACleanup();

 

    return 0;

}

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...