[Lazarus-es] synapse

José Mejuto joshyfun en gmail.com
Vie Oct 4 06:33:27 CEST 2013


El 03/10/2013 21:12, Paola Bruccoleri escribió:

> alguien tendrá algún ejemplo que funcione, usando por ej una cuenta de
> gmail?
> mientras sigo buscando....
>

Hola,

El adjunto es la función que yo uso para enviar por e-mail y funciona 
con gmail, hotmail, etc. Hay variables que forman parte de la clase, 
pero creo que su significado se deduce por el nombre facilmente.

-- 

------------ próxima parte ------------
function TfrmSendByMail.intfSendMail: Boolean;
var
  smtp: TSMTPSend;
  LineasDelMensaje: TStringList;
  Mime: TMimeMess;
  MimeMix: TMimePart;
  j: integer;
begin
  Result:=false;
  LineasDelMensaje := TStringList.Create;
  smtp := TSMTPSend.Create;
  Mime:=TMimeMess.Create;
  MimeMix:=Mime.AddPartMultipart('mixed',nil);
  try
    AddToLog('Creando paquetes del mensaje.');
    LineasDelMensaje.Text:=FMessageText;
    Mime.AddPartTextEx(LineasDelMensaje,MimeMix,TMimeChar.UTF_8,true,TMimeEncoding.ME_QUOTED_PRINTABLE);
    if Assigned(FAttachs) then begin
      for j := 0 to FAttachs.Count-1 do begin
        with TSMTPAttach(FAttachs[j]) do begin
          Mime.AddPartBinary(FData,FName,MimeMix);
        end;
      end;
    end;
    Mime.Header.From:=FEmailFrom;
    Mime.Header.ToList.Add(FEmailTo);
    Mime.Header.Subject:=UTF8ToAnsi(FEmailSubject);
    Mime.Header.CharsetCode:=TMimeChar.ISO_8859_1;
	//Confirmación de recepción
    Mime.Header.CustomHeaders.Add('Disposition-Notification-To: '+FEmailFrom);
    Mime.Header.XMailer:='Mi correo 1.0';
    Mime.EncodeMessage;

    smtp.UserName:=FLogin;
    smtp.Password:=FPassword;

    smtp.TargetHost:=FSMTPServer;
    smtp.TargetPort:=IntToStr(FSMTPPort);
    smtp.AutoTLS:=true;

    AddToLog('Iniciando conexión segura.');
    if not smtp.Login() then
      raise ESMTP.Create('SMTP ERROR: Login:' + smtp.EnhCodeString);
    AddToLog('Iniciando capa de transporte seguro');
    //if not smtp.StartTLS() then
    //  raise ESMTP.Create('SMTP ERROR: StartTLS:' + smtp.EnhCodeString);

    AddToLog('Conexión segura establecida.');
    if not smtp.MailFrom(FEmailFrom, 0) then
      raise ESMTP.Create('ERROR: Código MF "'+smtp.EnhCodeString+'" // "'+smtp.ResultString+'"');
    if not smtp.MailTo(FEmailTo) then
      raise ESMTP.Create('ERROR: Código MT "'+smtp.EnhCodeString+'" // "'+smtp.ResultString+'"');
    AddToLog('Enviando datos...');
    if not smtp.MailData(mime.Lines) then
      raise ESMTP.Create('ERROR: Código MD "'+smtp.EnhCodeString+'" // "'+smtp.ResultString+'"');

    AddToLog('Datos enviados.');
    AddToLog('Cerrando conexíón...');
    if not smtp.Logout() then
      raise ESMTP.Create('ERROR: Código LO "'+smtp.EnhCodeString+'"');
    AddToLog('Proceso finalizado con éxito.');
    Result:=true;
  finally
    Mime.Free;
    LineasDelMensaje.Free;
    smtp.Free;
  end;
end;


More information about the Lazarus-es mailing list