Ver Mensaje Individual
  #1  
Antiguo 16-11-2014
nnebli nnebli is offline
Miembro
NULL
 
Registrado: may 2011
Posts: 14
Reputación: 0
nnebli Va por buen camino
Enviar e-mail desde terra.com, gmail.com, yahoo.es, movistar.es, hotmail.com, etc.

Después de haber estado buscando por Internet la forma de enviar e-mail desde diversas cuentas de correo como terra.com, gmail.com, yahoo.es, movistar.es, hotmail.com, etc. no he visto nada que realmente deje claro (a los ojos de los poco curtidos en el tema como yo) como enviarlos. Por eso, y bajo la sugerencia de Newton (al que agradezco desde ya su ayuda), he creado este hilo para intentar que en el mismo se quede claro como enviar e-mail desde distintas cuentas de correo.

En Delphi al Límite ví un ejemplo que funcionó perfectamente con 'terra.com', lo he adaptado un poco para poder enviar varios ficheros adjuntos. Lo pongo a continuación para quien le pueda ser útil.

Agradecería que quien tenga código para enviar un e-mail con más de un fichero adjunto desde distintas cuentas de correo (terra.com, gmail.com, yahoo.es, movistar.es, hotmail.com, etc.) que lo ponga a continuación y así podrá servir de ayuda a todo aquel que lo necesite. Por favor, intentad que el código que se ponga funcione correctamente sin tener que hacer modificaciones apreciables, y si hay que hacerlas, explicarlas para que todos las podamos entender, incluido los menos duchos en Delphi. Gracias.

Código para enviar un e-mail desde 'terra.com' con varios ficheros adjuntos, utiliznado Delphi 7 y Windows XP:

Código Delphi [-]
// Nota: utilizamos varios TEdit para recoger información como el asunto del mensaje, usuario, contraseña, etc.
 
unit EnviarEMailConDelphi7;
interface
uses
IdSMTP, IdMessage, // he añadido estas dos
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls;
type
TFPEnviarEMailConDelphi7 = class(TForm)
btnEnviarMensaje: TButton;
Label1: TLabel;
edUsuario: TEdit;
Label2: TLabel;
edContrasenna: TEdit;
Label3: TLabel;
edAsunto: TEdit;
Label4: TLabel;
edDestinatario1: TEdit;
Label5: TLabel;
edTextoDelEmail: TEdit;
procedure btnEnviarMensajeClick(Sender: TObject);
procedure CompruebaTecla(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FPEnviarEMailConDelphi7: TFPEnviarEMailConDelphi7;
 
implementation
Const
// definiemos el máximo número de ficheros adjuntos que se van a poder utilizar
MaximoNumeroDeFicherosAdjuntosp = 5;
var
// definimos aquí este Array para que podamos tener acceso desde cualquier sitio de este programa
RutaYNombreDelFicheroAAdjuntarp : Array[1..MaximoNumeroDeFicherosAdjuntosp] of String;
 
{$R *.dfm}
 
 
procedure EnviarMensaje( sUsuario, sClave, sHost, sAsunto, sDestino, sMensaje: String );
var
SMTP: TIdSMTP;
Mensaje: TIdMessage;
Adjunto : Array[1..MaximoNumeroDeFicherosAdjuntosp] of TIdAttachment;
repite : Integer;
begin
// Creamos el componente de conexión con el servidor
SMTP := TIdSMTP.Create( nil );
SMTP.Username := sUsuario;
SMTP.Password := sClave;
SMTP.Host := sHost;
SMTP.Port := 25;
SMTP.AuthenticationType := atLogin;
// Creamos el contenido del mensaje
Mensaje := TIdMessage.Create( nil );
Mensaje.Clear;
Mensaje.From.Name := sDestino;
Mensaje.From.Address := sDestino;
Mensaje.Subject := sAsunto;
Mensaje.Body.Text := sMensaje;
Mensaje.Recipients.Add;
Mensaje.Recipients.Items[0].Address := sDestino;
 
// adjunta todos los ficheros que se hayan indicado. Máximo 5 ficheros de acuerdo con la definción del Array: RutaYNombreDelFicheroAAdjuntarp
For repite := 1 To MaximoNumeroDeFicherosAdjuntosp Do
Begin
// Si hay que meter un archivo adjunto lo creamos y lo asignamos al mensaje
if RutaYNombreDelFicheroAAdjuntarp[repite] <> '' then
begin
// si existe el fichero a adjuntar lo adjunta
if FileExists( RutaYNombreDelFicheroAAdjuntarp[repite] ) then
Adjunto[repite] := TIdAttachment.Create( Mensaje.MessageParts, RutaYNombreDelFicheroAAdjuntarp[repite] );
end
else
Adjunto[repite] := nil;
End;
// fin de: adjunta todos los ficheros que se hayan indicado. Máximo 10 fichero de acuerdo con la definción del Array: RutaYNombreDelFicheroAAdjuntarp
 
// Conectamos con el servidor SMTP
try
SMTP.Connect;
except
raise Exception.Create( 'Error al conectar con el servidor. ' );
end;
 
// Si ha conectado enviamos el mensaje y desconectamos
if SMTP.Connected then
begin
try
SMTP.Send( Mensaje );
except
raise Exception.Create( 'Error al enviar el mensaje. ' );
end;
try
SMTP.Disconnect;
except
raise Exception.Create( 'Error al desconectar del servidor. ' );
end;
end;
 
// Liberamos los objetos creados
For repite := 1 To MaximoNumeroDeFicherosAdjuntosp Do
if Adjunto[repite] <> nil then
FreeAndNil( Adjunto[repite] );
 
FreeAndNil( Mensaje );
FreeAndNil( SMTP );
 
Application.MessageBox( 'Mensaje enviado correctamente. ','Fin de proceso',MB_ICONINFORMATION );
 
end;
 
procedure TFPEnviarEMailConDelphi7.btnEnviarMensajeClick(Sender: TObject);
Var
Usuariop : String;
Clavep : String;
AsuntoMensajep : String;
DireccionDestinop : String;
TextoDelMensajep : String;
begin
// recuperamos de los TEdit los datos
Usuariop := edUsuario.Text;
Clavep := edContrasenna.Text;
AsuntoMensajep := edAsunto.Text;
DireccionDestinop := edDestinatario1.Text;
TextoDelMensajep := edTextoDelEmail.Text;
 
// indicamos la ruta y el nombre donde están los ficheros a adjuntar
RutaYNombreDelFicheroAAdjuntarp[1] := 'C:\documento1.zip';
RutaYNombreDelFicheroAAdjuntarp[2] := 'C:\documento2.zip';
RutaYNombreDelFicheroAAdjuntarp[3] := 'C:\documento3.zip';
RutaYNombreDelFicheroAAdjuntarp[4] := 'C:\documento4.zip';
RutaYNombreDelFicheroAAdjuntarp[5] := 'C:\documento5.zip';
 
// Vamos al procedimiento que envía el mensaje. Nota: Como este correo se envía desde 'terra.com' ponemos: 'smtp.terra.com'
EnviarMensaje( Usuariop, Clavep, 'smtp.terra.com', AsuntoMensajep, DireccionDestinop, TextoDelMensajep);
 
end;
 
procedure TFPEnviarEMailConDelphi7.CompruebaTecla(Sender: TObject;var Key: Char);
begin
If Key = #27 Then
Close;
end;
end.

Fin de: Código para enviar un e-mail desde 'terra.com' con varios ficheros adjuntos, utiliznado Delphi 7 y Windows XP:

Última edición por dec fecha: 16-11-2014 a las 16:03:39. Razón: Añadir etiquetas DELPHI
Responder Con Cita