Duvida sobre envio emails com SSL (ou não)

17/07/2009

Bom dia   Tenho uma rotina em Delphi 2007 com Indy10 que envia e-mails com e sem anexo, com ou sem autenticação.   Não estou conseguindo enviar emails que utilizem SSL, como por exemplo gmail, hotmail, etc..   Se houver algum exemplo de rotina para enviar e-mail, com ou sem autenticação e com ou sem SSL, agradeço.   Obrigada   Silvia
Silvia Berezin

Silvia Berezin

Curtidas 0

Respostas

Rodrigo Mourão

Rodrigo Mourão

17/07/2009

Olá Silvia,

Bem pelo que entendi você não está conseguindo enviar email utilizando SMTP do gmail e hotmail, não é isso ? Bem no hotmail não sei como funciona mas no gmail as portas utilizadas no smtp não é a 25 e sim a 465 se não me engano. Assim ao enviar um email utilizando contas gmail o nuemro da porta deverá ser auterado.

Acredito que isso já lhe ajude.

Estamos a disposição !!

Atenciosamente,
Rodrigo Carreiro Mourão
Borland Instructor Certified
Coordenador da Consultoria em Delphi
GOSTEI 0
Rodrigo Mourão

Rodrigo Mourão

17/07/2009

Olá Silvia,


As Dicas ajudaram? Há mais alguma dúvida?

Estamos agaurdando para encerrarmos o chamado !!

Abs.

Atenciosamente,
Rodrigo Carreiro Mourão
Borland Instructor Certified
Coordenador da Consultoria em Delphi

GOSTEI 0
Rodrigo Mourão

Rodrigo Mourão

17/07/2009

Olá Silvia,

Estaremos colocando o chamado como concluido.
Caso haja alguma outra dúvida basta postar que reabriremos o chamado.

Atenciosamente,
Rodrigo Carreiro Mourão
Borland Instructor Certified
Coordenador da Consultoria em Delphi

GOSTEI 0
Silvia Berezin

Silvia Berezin

17/07/2009

Olá Rodrigo Mourão   É a primeira vez que estou uando o suporte. Fiquei aguardando um contato por e-mail e agora que entrei no site que vi as respostas e me chamado foi concluido, porém não foi resolvido. O problema não é a porta, pois já tentei todas. O que preciso é uma rotina de exemplo para envir e-mail com SSL. Claro que já pocurei na NET e testei todas ue achei e nenhuma funcionou.   Basicamente isso   Obigada   Silvia
GOSTEI 0
Rodrigo Mourão

Rodrigo Mourão

17/07/2009

Olá Silvia,


Todo o contato é feito através do sistema de consultoria, quando você responde um chamdo eu recebe um aviso por email e quando eu respondo um chamado quem recebe o aviso é você. Verifique seu email de cadastro na DevMedia e caso não esteja recebendo as notificações entre em contato que verificamos o problema.

Quanto ao chamdo temos prazo para encerrá-lo por falta de resposta porém como está em destaque na minha ultima mensagem você pode reabrí-lo, como foi feito, que voltamos a lhe atender.


Agora quanto a sua dúvida peço que envie sua aplicação, ou pelo menos faça uma exemplo de envio com a conta do Gmail que esta tentado enviar o email, e nós envie através do disco virtual para que nós possamos analisar e ver onde esta errando.

Para saber como utilizar o disco virtual assista nossa demonstração: https://www.devmedia.com.br/imagens/videos/4/Video%20disco%20virtual.htm

Estarei aguardando o projeto para analisar.

Obrigado.

Atenciosamente,
Rodrigo Carreiro Mourão
Borland Instructor Certified
Coordenador da Consultoria em Delphi
GOSTEI 0
Silvia Berezin

Silvia Berezin

17/07/2009

Olá Rodrigo   Primeiro desculpe pela confusao. Realmente nao recebi nenhum e-mail da DevMedia.   Segue abaixo, um codigo que funciona se o email nao tiver SSL. Voce pode testar com qualquer um (gmail, hotmail..)Não funciona. Talvez eu esteja escrevendo o codigo errado,por isso pedi um exemplo. A parte que nao funciona esta comentada no codigo com //   Obrigada   Silvia   procedure TFormPreviewHTML.BtnEnviaEmailClick(Sender: TObject);
begin
 if MessageDlg('Confirma o envio deste e-mail ?',mtConfirmation,[mbYes,mbNo],0) = mrNo then
 Abort;
 try
  with IdMessage1 do
  begin
   IdMessage1.ContentType:='text/html';
   From.Text := pubUSERNAME;
   Recipients.EMailAddresses := sEmailCli;
   Subject := 'Relatório de conta corrente';
   Body.Text := sHTML;
  end;
  with IdSMTP1 do
  begin
   if pubEMAILAUTENTICACAO = 'T' then
   begin
    AuthType := atDefault;
    username := copy(pubUSERNAME,1,pos('@',pubUSERNAME)-1);      Password := pubPASSWORD;
   end
   else
    AuthType := atNone;
   //if pubEMAILSSL = 'T' then
   //IOHandler := IdIOHandlerSocket else IOHandler := NIL;
    Host := pubHOST;
   try
    Connect;
    Send(IdMessage1);
   finally
    if Connected then Disconnect;
   end;
  end;
 except
  on e:exception do
  begin
   ShowMessage('Erro ao enviar o e-mail: '^M+E.Message);
  end;
 end;
end;
GOSTEI 0
Rodrigo Mourão

Rodrigo Mourão

17/07/2009

Ok Silvia, sem problemas. Vou pedir o pessoal aqui para fazer o favor de verificar.

Agora vendo seu codigo não vejo nada errado, porém não estou tendo aqui acesso as consigurações do IDSmtp, mas não tem problema eu vou fazer uns testes aqui. Agora so por desemcargo de consciencia pois derepente vc esta falando alho e eu entendendo bugalho rsrsrsrsrs.

Você não consegue enviar email para o gmail/hotmail ou pelo gmail/hotmail ?? Ou seja, da erro quando usa um smtp.gmail.com ??

Fico no aguardo !!

Atenciosamente,
Rodrigo Carreiro Mourão
Borland Instructor Certified
Coordenador da Consultoria em Delphi
GOSTEI 0
Devmedia

Devmedia

17/07/2009

Silvia,
o email que temos cadastrado no nosso sistema é silvia@infosystem.com.br
Caso está incorreto ou queira adicionar mais um email, por favor, faça essa solicitação junto a www.devmedia.com.br/mancad
GOSTEI 0
Rodrigo Mourão

Rodrigo Mourão

17/07/2009

Olá Como não houve resposta vou assumir que esta tentando usar o SMTP do gmail sendo assim vamos as dicas.
Primeiro tem que se configurar o TIDSMTP com os seguintes dados.
Host: smtp.gmail.com;Porta: 587UserName: emaildaconta@gmail.comPassWord: SenhaDaConta;
Faça o teste e me de um feedback !!

Atenciosamente,
Rodrigo Carreiro Mourão
Borland Instructor Certified
Coordenador da Consultoria em Delphi
GOSTEI 0
Rodrigo Mourão

Rodrigo Mourão

17/07/2009

Ops Post Errado:

Segue procedimentos:


São necessárias as DLLs que você pode baixar da propria Indy
http://indy.fulgan.com/SSL/Archive/indy_OpenSSL096m.zip

Feito isso vc vai precisar de 4 componentes:


IdSMTP
IdMessage
IdAntiFreeze
IdSSLIOHandlerSocketOpenSSL1


Tem que colocar a propriedade IdSMTP.AuthType como atDefault.
Eu testei no WinSeven ultimate com D2007 e Indy 10.

Segue Código:

try
        with IdSMTP do
        begin
            AuthType  := atDefault; //Login
            Host      := 'smtp.gmail.com';
            Password  := 'suasenha';
            Port      := 465;
            Username  := 'email@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 := 'email@gmail.com';
        IdMessage.From.Text    := 'nome';
        IdMessage.Subject      := edtAssunto.Text;
        IdMessage.Body.Text    := memo1.lines.text;
        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
      ShowMessage(E.Message)
    end;
    IdSMTP.Disconnect;


Espero ter ajudado.

Abs.

GOSTEI 0
Rodrigo Mourão

Rodrigo Mourão

17/07/2009

Olá,

AS dicas foram suficiente?

Estamos aguardando para encerrar o chamado.

Abs.


Atenciosamente,
Rodrigo Carreiro Mourão
Borland Instructor Certified
Coordenador da Consultoria em Delphi


GOSTEI 0
Devmedia

Devmedia

17/07/2009

Silvia,
por falta de retorno estamos concluindo o chamado. Se ainda as dúvidas sobre esse assunto persistirem, por favor, volte a postar aqui mesmo que o consultor voltará a lhe atender.
GOSTEI 0
POSTAR