Erro ao tentar enviar e-mail pelo delphi xe5
Salve, salve delphianos!!!
Criei uma rotina no meu programa para capturar todas as telas de erros, zipar e posteriormente enviar para o meu email para que assim eu efetue as correções necessárias. Com tudo a "moça bonita - chamada delphi xe5" tá batendo só na cara pra não tirar a tirar a calçinha - kkkkk.... sempre dá erro ao conectar ao servidor de email para enviar.
ALGUÉM PODE ME AJUDAR? DAR UMA LUZ NESSE TUNEL ESCURO.... DE ANTE MAO JA AGRADEÇO
meu código esta escrito assim:
Var nomeArq:string;
ano, mes, dia, hor, min, seg, Mseg:word;
i : Integer;
FileIni, FileOut: TFileStream;
Zip: TCompressionStream;
slFiles: TStringList;
IdSSLIOHandlerSocket: TIdSSLIOHandlerSocketOpenSSL;
IdSMTP: TIdSMTP;
IdMessage: TIdMessage;
IdText: TIdText;
sAnexo: string;
begin
{MessageDlg(E.Message + #13#13 +
'Reinicie o sistema!',
mtError, [mbOK], 0);}
//...Captura e salva a tela atual do erro.
try
Captura.picture.Assign(CaptureScreenRect(Rect(0,0,Screen.Width,Screen.Height)));
DecodeDateTime(Now,ano,mes,dia,hor,min,seg,mseg);
nomeArq := IntToStr(dia)+'_'+FormatFloat('00',mes)+'_'+IntToStr(ano)+' - '+IntToStr(hor)+'h '+IntToStr(min)+'min e '+IntToStr(seg)+'seg '+ lnome;
nomeArq := ExtractFilePath(Application.ExeName)+ 'erros\' +nomeArq;
BmpToJpg(Captura.picture.Bitmap, nomeArq);
except
end;
//...Compacta em Anexo a Pasta com as Imagens de Erros Capturada.
slFiles := TStringList.Create;
EnumFiles(ExtractFilePath(Application.ExeName)+ 'erros', '*', faAnyFile - faDirectory, slFiles, True, True);
CompressFiles(slFiles, 'erros' + '.zip');
slFiles.Free;
if InternetCheckConnection('http://www.google.com/',1,0) then
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 := 'zumbinho@gmail.com';
IdSMTP.Password := 'bandodeloucos';
// Configuração da mensagem (TIdMessage)
IdMessage.From.Address := 'zumbinho@gmail.com';
IdMessage.From.Name := 'Nome do Remetente';
IdMessage.ReplyTo.EMailAddresses := IdMessage.From.Address;
IdMessage.Recipients.Add.Text := 'marcosmta@hotmail.com';
IdMessage.Subject := 'Verificar Erro no Ascom 1.0';
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 := ExtractFilePath(Application.ExeName)+ 'Erros.zip';
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;
Criei uma rotina no meu programa para capturar todas as telas de erros, zipar e posteriormente enviar para o meu email para que assim eu efetue as correções necessárias. Com tudo a "moça bonita - chamada delphi xe5" tá batendo só na cara pra não tirar a tirar a calçinha - kkkkk.... sempre dá erro ao conectar ao servidor de email para enviar.
ALGUÉM PODE ME AJUDAR? DAR UMA LUZ NESSE TUNEL ESCURO.... DE ANTE MAO JA AGRADEÇO
meu código esta escrito assim:
Var nomeArq:string;
ano, mes, dia, hor, min, seg, Mseg:word;
i : Integer;
FileIni, FileOut: TFileStream;
Zip: TCompressionStream;
slFiles: TStringList;
IdSSLIOHandlerSocket: TIdSSLIOHandlerSocketOpenSSL;
IdSMTP: TIdSMTP;
IdMessage: TIdMessage;
IdText: TIdText;
sAnexo: string;
begin
{MessageDlg(E.Message + #13#13 +
'Reinicie o sistema!',
mtError, [mbOK], 0);}
//...Captura e salva a tela atual do erro.
try
Captura.picture.Assign(CaptureScreenRect(Rect(0,0,Screen.Width,Screen.Height)));
DecodeDateTime(Now,ano,mes,dia,hor,min,seg,mseg);
nomeArq := IntToStr(dia)+'_'+FormatFloat('00',mes)+'_'+IntToStr(ano)+' - '+IntToStr(hor)+'h '+IntToStr(min)+'min e '+IntToStr(seg)+'seg '+ lnome;
nomeArq := ExtractFilePath(Application.ExeName)+ 'erros\' +nomeArq;
BmpToJpg(Captura.picture.Bitmap, nomeArq);
except
end;
//...Compacta em Anexo a Pasta com as Imagens de Erros Capturada.
slFiles := TStringList.Create;
EnumFiles(ExtractFilePath(Application.ExeName)+ 'erros', '*', faAnyFile - faDirectory, slFiles, True, True);
CompressFiles(slFiles, 'erros' + '.zip');
slFiles.Free;
if InternetCheckConnection('http://www.google.com/',1,0) then
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 := 'zumbinho@gmail.com';
IdSMTP.Password := 'bandodeloucos';
// Configuração da mensagem (TIdMessage)
IdMessage.From.Address := 'zumbinho@gmail.com';
IdMessage.From.Name := 'Nome do Remetente';
IdMessage.ReplyTo.EMailAddresses := IdMessage.From.Address;
IdMessage.Recipients.Add.Text := 'marcosmta@hotmail.com';
IdMessage.Subject := 'Verificar Erro no Ascom 1.0';
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 := ExtractFilePath(Application.ExeName)+ 'Erros.zip';
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;
Hardsoft Informática
Curtidas 0
Mais Respostas
Raylan Zibel
15/04/2016
Blz, mas qual a mensagem da exceção levantada? Qual o erro original?
GOSTEI 0
Hardsoft Informática
15/04/2016
Aparece msg se bem me lembro é
Erro na conexão ou autenticação: <https://accounts.google.com.br/signin/xontinue?sarp..
Erro na conexão ou autenticação: <https://accounts.google.com.br/signin/xontinue?sarp..
GOSTEI 0
Hardsoft Informática
15/04/2016
Ninguém pea ajudar???
GOSTEI 0
Hamilton Oliveira
15/04/2016
O Gmail utiliza um sistema de criptografia chamado SSL, e para podermos conectar nossa aplicação à ele, necessitamos de duas dlls especificas: libeay32.dll e ssleay32.dll. Elas podem ser encontradas no link abaixo. Depende da versão da indy que vc está usando. Essa aqui é do delphi 7.
http://indy.fulgan.com/SSL/indy_OpenSSL096m.zip
Após baixa-las, descompacte-as no diretório C:\WINDOWS\System32, ou junto ao seu executável.
Leia mais em: Envio de E-mail usando o componente indy usando SMTP Gmail https://www.devmedia.com.br/envio-de-e-mail-usando-o-componente-indy-usando-smtp-gmail/9107#ixzz462YVKKYd
http://indy.fulgan.com/SSL/indy_OpenSSL096m.zip
Após baixa-las, descompacte-as no diretório C:\WINDOWS\System32, ou junto ao seu executável.
Leia mais em: Envio de E-mail usando o componente indy usando SMTP Gmail https://www.devmedia.com.br/envio-de-e-mail-usando-o-componente-indy-usando-smtp-gmail/9107#ixzz462YVKKYd
GOSTEI 0