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
[-]
unit EnviarEMailConDelphi7;
interface
uses
IdSMTP, IdMessage, 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
public
end;
var
FPEnviarEMailConDelphi7: TFPEnviarEMailConDelphi7;
implementation
Const
MaximoNumeroDeFicherosAdjuntosp = 5;
var
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
SMTP := TIdSMTP.Create( nil );
SMTP.Username := sUsuario;
SMTP.Password := sClave;
SMTP.Host := sHost;
SMTP.Port := 25;
SMTP.AuthenticationType := atLogin;
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;
For repite := 1 To MaximoNumeroDeFicherosAdjuntosp Do
Begin
if RutaYNombreDelFicheroAAdjuntarp[repite] <> '' then
begin
if FileExists( RutaYNombreDelFicheroAAdjuntarp[repite] ) then
Adjunto[repite] := TIdAttachment.Create( Mensaje.MessageParts, RutaYNombreDelFicheroAAdjuntarp[repite] );
end
else
Adjunto[repite] := nil;
End;
try
SMTP.Connect;
except
raise Exception.Create( 'Error al conectar con el servidor. ' );
end;
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;
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
Usuariop := edUsuario.Text;
Clavep := edContrasenna.Text;
AsuntoMensajep := edAsunto.Text;
DireccionDestinop := edDestinatario1.Text;
TextoDelMensajep := edTextoDelEmail.Text;
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';
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: