Duvida sobre envio emails com SSL (ou não)
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
Curtidas 0
Respostas
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
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
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
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
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
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
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
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
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
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;
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
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
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
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
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
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
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
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.
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
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
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
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.
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