SoloCodigo

Programación General => C/C++ => C++ Builder => Mensaje iniciado por: Max_D en Martes 2 de Mayo de 2006, 21:11

Título: Como Mandar Un E-mail
Publicado por: Max_D en Martes 2 de Mayo de 2006, 21:11
Hola, no se como puedo mandar un email a traves de una aplicacion. Probe el ejemplo que aparece en la ayuda de C++ Builder 6 pero ni asi consegui hacerlo. Si alguien ha conseguido mandar alguno, le agradeceria que me ayudara.
Título: Re: Como Mandar Un E-mail
Publicado por: jrsmith en Miércoles 10 de Mayo de 2006, 18:43
necesitas los servidores de smtp y pop3 yo utilice pues eso ya bastante tiempo los de yahoo.com.mx
Título: Re: Como Mandar Un E-mail
Publicado por: _Viktor en Jueves 11 de Mayo de 2006, 17:20
Hola, acá te dejo un código que encontré hace algun tiempo, pertenece a _Leo del ClubBuilder y esta bastante bueno...

Saludos!

Citar
//---------------------------------------------------------------------------
// _Leo Software '2003                                 
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop

#include <memory>
#include "Unit1.h"


//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;


//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}


//---------------------------------------------------------------------------
void __fastcall TForm1::EnviarComando(String cmd, int resp, bool cr)
{
    memoConversacion->Lines->Add(">> " + cmd);

    if (cr)
        Powersock1->Writeln(cmd);
    else
        Powersock1->Write(cmd);

    String respuesta;
    do
    {
        respuesta = Powersock1->ReadLn();
        memoConversacion->Lines->Add("<< " + respuesta);

        if (respuesta.Pos(resp) != 1)
            throw Exception("Error :: " + cmd);
    } while (respuesta[4] == '-');
}


//---------------------------------------------------------------------------
String __fastcall TForm1::CodificarBase64(String str)
{
    std::auto_ptr<TStringStream> is(new TStringStream(str));
    std::auto_ptr<TStringStream> os(new TStringStream(""));

    NMUUProcessor1->InputStream  = is.get();
    NMUUProcessor1->OutputStream = os.get();
    NMUUProcessor1->Method = uuMime;
    NMUUProcessor1->Encode();

    return os->DataString;
}


//---------------------------------------------------------------------------
void __fastcall TForm1::EnviarCorreo(String smtp, String usuario,
    String clave, String de, String para, String asunto, String mensaje)
{
    Powersock1->Host = smtp;
    Powersock1->Port = 25;

    if (Powersock1->Connected)
        Powersock1->Disconnect();

    Powersock1->Connect();
    if (!Powersock1->Connected)
        throw Exception("No se pudo conectar");

    String respuesta = Powersock1->ReadLn();
    memoConversacion->Lines->Add(respuesta);
    if (respuesta.Pos("220") != 1)
        throw Exception("Error al conectar");

    EnviarComando("ehlo " + usuario);
    EnviarComando("rset");

    EnviarComando("auth LOGIN", 334);
    EnviarComando(CodificarBase64(usuario), 334, false);
    EnviarComando(CodificarBase64(clave), 235, false);

    EnviarComando("mail from:" + de);
    EnviarComando("rcpt to:" + para);

    EnviarComando("data", 354);
    String cabecera = "Subject: " + asunto + "\r\n"
                      "To: "      + para   + "\r\n"
                      "From: "    + de     + "\r\n";
    EnviarComando(cabecera + "\r\n" + mensaje + "\r\n.");

    EnviarComando("Quit", 221);
    Powersock1->Disconnect();
}


//---------------------------------------------------------------------------

void __fastcall TForm1::btnEnviarClick(TObject *Sender)
{
    try
    {
        btnEnviar->Enabled = false;
        EnviarCorreo(edtServidor->Text, edtUsuario->Text, edtClave->Text,
            edtDeNombre->Text + "<" + edtDeCorreo->Text + ">",
            edtParaNombre->Text + "<" + edtParaCorreo->Text + ">",
            edtAsunto->Text, memoMensaje->Text);
    }
    __finally
    {
        btnEnviar->Enabled = true;
    }
}
//---------------------------------------------------------------------------
Título: Re: Como Mandar Un E-mail
Publicado por: Max_D en Viernes 19 de Mayo de 2006, 16:39
Muchas gracias por las respuestas  :P  Voy a trabajar en ello  :comp: