Envio Email com SSL
Alguém aqui já implementou envio de email com segurança SSL? Estou tentando enviar email para o GMail usando Indy 10 e Delphi 2007 e estou tendo alguns contratempos. Quando tento conectar em uma das portas do GMail ele retorna o Status de conectado mas depois a aplicação trava consumindo todo o processamento da máquina.
Existe algum outro componente de envio de email melhor que o Indy?
Existe algum outro componente de envio de email melhor que o Indy?
Rodc
Curtidas 0
Respostas
Emberada
23/03/2009
Olá rodc...
Acredito que estou tendo o mesmo problema seu com o envio de emails pelo indy com conta do gmail...
O programa conecta e autentica ok mas fica travado na linha de envio da mensagem:
IdSMTP.Send(IdMessage);
Fica travado muito tempo e nada..
Uso Windows Vista, estou sem firewall, sem antivirus, DLL´s atualizadas, Delphi 2007 e nada...
Conseguiu resolver a questão?
Alguem tem alguma ideia do que seja ou de uma outra alternativa aceitável para Delphi?
Acredito que estou tendo o mesmo problema seu com o envio de emails pelo indy com conta do gmail...
O programa conecta e autentica ok mas fica travado na linha de envio da mensagem:
IdSMTP.Send(IdMessage);
Fica travado muito tempo e nada..
Uso Windows Vista, estou sem firewall, sem antivirus, DLL´s atualizadas, Delphi 2007 e nada...
Conseguiu resolver a questão?
Alguem tem alguma ideia do que seja ou de uma outra alternativa aceitável para Delphi?
GOSTEI 0
Rodc
23/03/2009
Pois sé, descobri que em uma das portas do GMail conecta-se apenas por modo Implicit e na outra porta apenas por modo Explicit. Mas o problema é que se o usuário escolher o tipo de opção errado ele terá de derrubar o programa e tentar novamente.
Continuo tentando... Qualquer posto aqui...
Continuo tentando... Qualquer posto aqui...
GOSTEI 0
Emberada
23/03/2009
Olá rodc!
Consegui resolver durante a madrugada...
A seguir está o codigo funcionando OK...
São necessárias as DLLs do pacote a seguir:
http://indy.fulgan.com/SSL/Archive/indy_OpenSSL096m.zip
Consegui enviar sem problemas, mesmo com o antivirus ativado.
Coloque os componentes a seguir no form, e o restante da pra sacar pelo fonte..
IdSMTP = TidSMTP
IdMessage = TIdMessage
IdAntiFreeze = TIdAntiFreeze
IdSSLIOHandlerSocketOpenSSL1 = TIdSSLIOHandlerSocketOpenSSL
Qualquer dúvida pode mandar ai que verificamos..
O meu problema era que a propriedade IdSMTP.AuthType estava ficando como atNone quando o correto é atDefault.
Estranho era que conectava e autenticava aparentemente ok, mas ficava travado no envio da mensagem...
Agora funcionou ok e está bem rápido o envio... pra mim 100¬!
Rodando no Indy 10 com Delphi 2007 em Windows Vista.
Fiz tantos testes que acabei reinstalando o indy 10 e talvez isso também tenha interferido, mas creio que não...
Consegui resolver durante a madrugada...
A seguir está o codigo funcionando OK...
São necessárias as DLLs do pacote a seguir:
http://indy.fulgan.com/SSL/Archive/indy_OpenSSL096m.zip
Consegui enviar sem problemas, mesmo com o antivirus ativado.
Coloque os componentes a seguir no form, e o restante da pra sacar pelo fonte..
IdSMTP = TidSMTP
IdMessage = TIdMessage
IdAntiFreeze = TIdAntiFreeze
IdSSLIOHandlerSocketOpenSSL1 = TIdSSLIOHandlerSocketOpenSSL
Qualquer dúvida pode mandar ai que verificamos..
O meu problema era que a propriedade IdSMTP.AuthType estava ficando como atNone quando o correto é atDefault.
Estranho era que conectava e autenticava aparentemente ok, mas ficava travado no envio da mensagem...
Agora funcionou ok e está bem rápido o envio... pra mim 100¬!
Rodando no Indy 10 com Delphi 2007 em Windows Vista.
Fiz tantos testes que acabei reinstalando o indy 10 e talvez isso também tenha interferido, mas creio que não...
try with IdSMTP do begin AuthType := atDefault; //Login Host := ´smtp.gmail.com´; Password := ´MINHASENHA´; Port := 465; Username := ´MEUEMAIL@gmail.com´; IOHandler := IdSSLIOHandlerSocketOpenSSL1; UseTLS := utUseRequireTLS; ConnectTimeout := 10000; ReadTimeout := 10000; AuthType := atDefault; //Login end;//with IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Method := sslvSSLv2; IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Mode := sslmUnassigned; IdMessage.Clear; IdMessage.MessageParts.Clear; if lstAnexos.Items.Count > 0 then begin for i:= 0 to lstAnexos.Items.Count - 1 do TIdAttachmentFile.Create(IdMessage.MessageParts, lstAnexos.Items[i]); end; IdMessage.From.Address := ´MEUEMAIL@gmail.com´; IdMessage.From.Text := ´MEUNOME´; IdMessage.Subject := edtAssunto.Text; IdMessage.Body.Text := CORPODOEMAIL_STRING; IdMessage.Recipients.EMailAddresses := EdtPara.Text; //email destino IdMessage.CCList.EMailAddresses := EdtCC.Text; IdMessage.BccList.EMailAddresses := EdtCCO.Text; if not IdSMTP.Connected then begin IdSMTP.Connect(); IdSMTP.Authenticate(); end;//if if IdSMTP.Connected then IdSMTP.Send(IdMessage); Application.ProcessMessages; except on E: Exception do Mensagem(E.Message, mtError, Self.Name); end; IdSMTP.Disconnect;
GOSTEI 0
Rodc
23/03/2009
Valew emberada... era apenas algumas configurações que estavam diferentes. Corrigi e funcionou.
Agora estou com outro tipo de problema, menor mas inconveniente. Se o usuário tentar conectar no Google e não habilitar o SSL, a conexão fica travada. Já esperei um tempão e não retornou nenhum erro, apenas fica travado. No Yahoo também tem outro problema, se tentar conectar sem habilitar o Login, o Yahoo retorna um erro de que precisa do login mas o componente do Indy não trata este retorno e tenta continuar o envio, retornando assim o erro ´Conection Closed Gracefully´, que quer dizer que o servidor forçou o encerramento da conexão.
Tens alguma idéia de como resolver isto?
Agora estou com outro tipo de problema, menor mas inconveniente. Se o usuário tentar conectar no Google e não habilitar o SSL, a conexão fica travada. Já esperei um tempão e não retornou nenhum erro, apenas fica travado. No Yahoo também tem outro problema, se tentar conectar sem habilitar o Login, o Yahoo retorna um erro de que precisa do login mas o componente do Indy não trata este retorno e tenta continuar o envio, retornando assim o erro ´Conection Closed Gracefully´, que quer dizer que o servidor forçou o encerramento da conexão.
Tens alguma idéia de como resolver isto?
GOSTEI 0
Cafosys
23/03/2009
alguem conseguiu faer funcionar para o smtp.live.com que é o do hotmail
GOSTEI 0
Rodc
23/03/2009
Usando o Indy eu não consegui... ele até conecta no servidor, negocia TLS e quando começa enviar os dados criptografados ele trava e não retorna mais... estou usando um [url=http://www.overbyte.be/frame_index.html?redirTo=/products/ics.html]componente da Overbyte[/url]... é meio complicado de usá-lo, mas funciona muito bem... inclusive com o hotmail.
GOSTEI 0
Cafosys
23/03/2009
com o exemplo de envio do site do componente da o seguinte erro
Must issue a STARTTLS command first
no smtp.live.com saberia me dizer qual é o problema.
se possivel daria pra me passar um exemplo do codigo do componente enviando para o hotmail
Must issue a STARTTLS command first
no smtp.live.com saberia me dizer qual é o problema.
se possivel daria pra me passar um exemplo do codigo do componente enviando para o hotmail
GOSTEI 0
Rodc
23/03/2009
Você tem de implementar a conexão segura (SSL). É o mesmo caso do acesso ao GMail.
Procura no fórum e no Google por ´GMail smtp ssl´. O Indy tem um componente para SSL, mas tem que baixar umas DLLs para funcionar...
Procura no fórum e no Google por ´GMail smtp ssl´. O Indy tem um componente para SSL, mas tem que baixar umas DLLs para funcionar...
GOSTEI 0
Cafosys
23/03/2009
no indy eu ja fiz esse implementação mas gostaria de saber como que é feito isso no componente da Overbyte
GOSTEI 0
Rodc
23/03/2009
Você está usando o exemplo de SSL? O exemplo está na pasta SslInternet. Ele faz uso do componente TSslSmtpCli.
GOSTEI 0
Cafosys
23/03/2009
o componente TSslSmtpCli não tem na instalação só o TSslSmtpCli como intalo esse componente a versao que baixei no site é v6 TSslBaseComponent
GOSTEI 0
Rodc
23/03/2009
o componente TSslSmtpCli não tem na instalação só o TSslSmtpCli
Como assim ´não tem o TSslSmtpCli, só o TSslSmtpCli´. Não é a mesma coisa?Não sei se é este o seu caso, mas você precisa incluir o define ´USESSL´ no projeto do componente para habilitar os componentes SSLs.
GOSTEI 0
Cafosys
23/03/2009
desculpa errei ao escrever o certo é
o componente TSslSmtpCli não tem na instalação só o TSmtpCli como instalo esse componente a versao que baixei no site é v6 quando rodo o pachage dos componentes com ssl da erro dizendo que não encontra a classe TSslBaseComponent
o componente TSslSmtpCli não tem na instalação só o TSmtpCli como instalo esse componente a versao que baixei no site é v6 quando rodo o pachage dos componentes com ssl da erro dizendo que não encontra a classe TSslBaseComponent
GOSTEI 0