Ejemplo Gmail (Está escrito casi de cabeza mirando un programa mío, creo que está bien y debería funcionar:
Código Delphi
[-]
procedure Enviar;
var
SMTP: TIdSMTP;
Mensaje: TIdMessage;
i: Integer;
lMens: String;
gmailssl: TIdSSLIOHandlerSocketOpenSSL;
Para: TIdEmailAddressList;
begin
gmailIssl := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
SMTP := nil;
SMTP := TIdSMTP.Create(nil);
try
gmailssl.Destination = 'smtp.gmail.com:587';
gmailssl.Host = 'smtp.gmail.com';
gmailssl.Port = 587;
SMTP.Username := 'usuario@gmail.com';
SMTP.Password := 'Clave';
SMTP.Host := 'smtp.gmail.com';
SMTP.Port := '587'; SMTP.IOHandler := gmailSSL;
SMTP.UseTLS := utUseExplicitTLS;
Mensaje := TIdMessage.Create(nil);
Para := TIdEmailAddressList.Create(nil);
Cuerpo := TStringList.Create;
try
Mensaje.Clear;
Mensaje.From.Name := Desde;
Mensaje.From.Address := Login;
Para.Add.Address = 'correo@correo.com'. Mensaje.Recipients := Para;
Mensaje.Subject := 'Asunto';
Correo.Cuerpo.Add('Cuerpo'); Mensaje.Body.Text := Cuerpo.Text;
TIdAttachmentFile.Create(Mensaje.MessageParts, 'direccionFichero');
Mensaje.Priority := mpHighest;
try
lMens := 'Error al conectar con el servidor:';
SMTP.Connect;
if SMTP.Connected then
begin
lMens := 'Error al enviar el mensaje:';
SMTP.Send(Mensaje);
lMens := 'Error al desconectar del servidor:';
SMTP.Disconnect;
end;
except
on E:Exception do
begin
lMens := lMens + ' ' + E.Message;
end;
end;
finally
try
for i := 0 to Mensaje.MessageParts.Count - 1 do
TIdAttachmentFile(Mensaje.MessageParts[i]).Free;
except
end;
Mensaje.Free;
Para.Free;
Cuerpo.Free;
end;
finally
if Assigned(SMTP) then SMTP.Free;
if Assigned(gmailIssl) then SMTP.Free;
end;
Donde pone "//Es una lista" es que puedes poner esa línea dentro de un bucle y rellenar varios datos.