[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