SoloCodigo
Programación General => C/C++ => C++ Builder => Mensaje iniciado 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.
-
necesitas los servidores de smtp y pop3 yo utilice pues eso ya bastante tiempo los de yahoo.com.mx
-
Hola, acá te dejo un código que encontré hace algun tiempo, pertenece a _Leo del ClubBuilder y esta bastante bueno...
Saludos!
//---------------------------------------------------------------------------
// _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;
}
}
//---------------------------------------------------------------------------
-
Muchas gracias por las respuestas :P Voy a trabajar en ello :comp: