I have the following code to send an email in delphi, but it gives an error (attached) at the end of the code after the last end. I'm using the latest version of delphi and it informs me if it starts, try ends are closed. What can cause this?
procedure TForm1.Button1Click(Sender: TObject);
var
// variáveis e objetos necessários para o envio
IdSSLIOHandlerSocket: TIdSSLIOHandlerSocketOpenSSL;
IdSMTP: TIdSMTP;
IdMessage: TIdMessage;
IdText: TIdText;
sAnexo: string;
begin
// instanciação dos objetos
IdSSLIOHandlerSocket := TIdSSLIOHandlerSocketOpenSSL.Create(Self);
IdSMTP := TIdSMTP.Create(Self);
IdMessage := TIdMessage.Create(Self);
try
// Configuração do protocolo SSL (TIdSSLIOHandlerSocketOpenSSL)
IdSSLIOHandlerSocket.SSLOptions.Method := sslvSSLv23;
IdSSLIOHandlerSocket.SSLOptions.Mode := sslmClient;
// Configuração do servidor SMTP (TIdSMTP)
IdSMTP.IOHandler := IdSSLIOHandlerSocket;
IdSMTP.UseTLS := utUseImplicitTLS;
IdSMTP.AuthType := satDefault;
IdSMTP.Port := 465;
IdSMTP.Host := 'smtp.gmail.com';
IdSMTP.Username := '[email protected]';
IdSMTP.Password := 'senha';
// Configuração da mensagem (TIdMessage)
IdMessage.From.Address := '[email protected]';
IdMessage.From.Name := 'Nome do Remetente';
IdMessage.ReplyTo.EMailAddresses := IdMessage.From.Address;
IdMessage.Recipients.Add.Text := '[email protected]';
IdMessage.Subject := 'Assunto do e-mail';
IdMessage.Encoding := meMIME;
// Configuração do corpo do email (TIdText)
IdText := TIdText.Create(IdMessage.MessageParts);
IdText.Body.Add('Corpo do e-mail');
IdText.ContentType := 'text/plain; charset=iso-8859-1';
// Opcional - Anexo da mensagem (TIdAttachmentFile)
sAnexo := 'C:\Anexo.pdf';
if FileExists(sAnexo) then
begin
TIdAttachmentFile.Create(IdMessage.MessageParts, sAnexo);
end;
// Conexão e autenticação
try
IdSMTP.Connect;
IdSMTP.Authenticate;
except
on E:Exception do
begin
MessageDlg('Erro na conexão ou autenticação: ' +
E.Message, mtWarning, [mbOK], 0);
Exit;
end;
end;
// Envio da mensagem
try
IdSMTP.Send(IdMessage);
MessageDlg('Mensagem enviada com sucesso!', mtInformation, [mbOK], 0);
except
On E:Exception do
begin
MessageDlg('Erro ao enviar a mensagem: ' +
E.Message, mtWarning, [mbOK], 0);
end;
end;
finally
// desconecta do servidor
IdSMTP.Disconnect;
// liberação da DLL
UnLoadOpenSSLLibrary;
// liberação dos objetos da memória
FreeAndNil(IdMessage);
FreeAndNil(IdSSLIOHandlerSocket);
FreeAndNil(IdSMTP);
end;
end;
end.