Preciso de ajuda para enviar e-mail usando TIdSMTP (Indy)

30/03/2005

0

Olá colegas,

estou tentando enviar um e-mail usando o componente TIdSMTP (Indy). Só que quando dou comando [b:bf7b1afa10]Send[/b:bf7b1afa10] ocorre o seguinte erro:

Project smtp.exe raised exception class EIdProtocolReplyError with message ´530 5.7.0 Must issue a STARTTLS command first´.


Alguém sabe como resolver isso???

Obrigado

Roberto


Tenil

Tenil

Responder

Posts

30/03/2005

Faelcavalcanti

Se o seu provedor, via protocolo SMTP, necessitar de autenticação, configure as informações de host inclusive password e depois coloque a propriedade [b:67636db62a]AuthenticationType[/b:67636db62a] para [b:67636db62a]atLogin[/b:67636db62a].

Falow!


Responder

30/03/2005

Tenil

[b:d2d9bcd13a]faelcavalcanti[/b:d2d9bcd13a], eu fiz isso. Veja o código:

  // Mensagem
  IdMsgSend.Subject                := ´teste de email´;
  IdMsgSend.Body.Text              := ´Teste de Email´;

  // Remetente
  idMsgSend.From.Address           := ´from@ficticio.com.br´;
  idMsgSend.From.Name              := ´Roberto´;
  //IdMsgSend.ReplyTo.EMailAddresses := ´from@ficticio.com.br´;

  // Destinatario
  IdMsgSend.Recipients.EMailAddresses := ´para@ficticio.com.br´;

  // Autenticacao - Use apenas quando o servidor exigir
  SMTP.AuthenticationType := atLogin;
  SMTP.UserId := ´teste@ficticio.com.br´;
  SMTP.Password := ´ficticio´;

  // Dados do Servidor
  SMTP.Host := ´smtp.ficticio.com.br;
  SMTP.Port := 25;

  SMTP.Connect;
  try
    SMTP.Send(IdMsgSend);
  finally
    SMTP.Disconnect;
  end;

Estou conseguindo conectar no servidor.

O erro ocorre na linha [b:d2d9bcd13a]SMTP.Send(IdMsgSend);[/b:d2d9bcd13a].

Muuuuuuito estranho...


Responder

30/03/2005

Faelcavalcanti

Cara sobre o objeto IDMessage, verifica se a propriedade [b:31f6d198fa]ContentType[/b:31f6d198fa] está setado para text/html, ou text/plain, isto é o que ele irá cuspir para o conteúdo da página, ou seja, o Body. Mechesse nas configurações de Buffer, têm que estar setados para 32768, tanto para [b:31f6d198fa]in[/b:31f6d198fa] como [b:31f6d198fa]out[/b:31f6d198fa]. Faiz um teste também se você consegue pingar o seu host.


Responder

30/03/2005

Rjun

Pesquisando na internet achei isso :

I am using the TIdSMTP but when I try to send mail I get an error message such as: ´530 Must issue a STARTTLS command first´
Previous Top Next

This message means that the SMTP server requires you to use TLS when authenticating and sending E-Mail. The server expects you to use explicit TLS SMTP. For this, you connect to port 25, issue an EHLO command and get a reply, send a STARTTLS command, and after getting a success reply, you then negotiate TLS with the server.

For Indy 8 and 9

Indy 8 and Indy 9 do not support explicit TLS with SMTP. If the SMTP server supports implicit TLS with SMTP, you may able to use implicit TLS with SMTP by stting the TIdSMTP.IOHandler to TIdSSLIOHandlerSocket and the port to the IdPORT_ssmtp constant in IdAssignedNumbers (465).

For Indy 10

Indy 10 supports SMTP with explicit TLS. In the Indy 10´s TIdSMTP, you simply have to assign a TIdSSLIOHandlerSocketBase descendent to the TIdSMTP.IOHandler property and set the UseTLS property to either utUseRequireTLS if you do not want to use an unencrypted connection or utUseExplicitTLS if you are willing to use an unencrypted connection.


http://www.indyproject.org/KB/index.html?smtpmuststarttls.htm

Rogério


Responder

30/03/2005

Tenil

Passos executados durante a conexão e o envio.

Resolving hostname smtp.gmail.com.
Connecting to 64.233.171.109.
Connected.
[b:e29aa373be]Aqui ocorre o erro: [u:e29aa373be]SMTP.Send(IdMsgSend)[/u:e29aa373be] - Project smtp.exe raised exception class EIdProtocolReplyError with message ´530 5.7.0 Must issue a STARTTLS command first´.[/b:e29aa373be]
Disconnecting from 64.233.171.109.
Not connected.


Responder

30/03/2005

Faelcavalcanti

Pesquisando na internet achei isso : I am using the TIdSMTP but when I try to send mail I get an error message such as: ´530 Must issue a STARTTLS command first´ Previous Top Next This message means that the SMTP server requires you to use TLS when authenticating and sending E-Mail. The server expects you to use explicit TLS SMTP. For this, you connect to port 25, issue an EHLO command and get a reply, send a STARTTLS command, and after getting a success reply, you then negotiate TLS with the server. For Indy 8 and 9 Indy 8 and Indy 9 do not support explicit TLS with SMTP. If the SMTP server supports implicit TLS with SMTP, you may able to use implicit TLS with SMTP by stting the TIdSMTP.IOHandler to TIdSSLIOHandlerSocket and the port to the IdPORT_ssmtp constant in IdAssignedNumbers (465). For Indy 10 Indy 10 supports SMTP with explicit TLS. In the Indy 10´s TIdSMTP, you simply have to assign a TIdSSLIOHandlerSocketBase descendent to the TIdSMTP.IOHandler property and set the UseTLS property to either utUseRequireTLS if you do not want to use an unencrypted connection or utUseExplicitTLS if you are willing to use an unencrypted connection. http://www.indyproject.org/KB/index.html?smtpmuststarttls.htm Rogério


Era bom você se certificar disto também. Provalvelmente você deverá verificar se as suas informações estão concisas em relação ao envio para o protocolo a partir de seu servidor especificado. Os provedores aderiram a isto, de forma a diminuir os spams, e deu muito certo. Caso ainda tenha dúvidas contate informações técnicas com o seu provedor para saber se ele dispõe do serviço disponível para que você possa utililá-lo a partir do protocolo SMTP.

Espero ter ajudado!


Responder

30/03/2005

Rjun

Bom, é o seguinte :

Para o gmail, a porta de envio é 465, além de requerer uma conexão criptografada (SSL)

Rogério


Responder

30/03/2005

Massuda

Pesquisando na internet achei isso...
Para seguir o que foi sugerido, você vai precisar de instalar o suporte a SSL no Indy. Para fazer isso, dê uma olhada [url=http://forum.clubedelphi.net/viewtopic.php?t=59187]neste tópico[/url] do fórum.


Responder

30/03/2005

Tenil

Pesquisando na internet achei isso : For Indy 8 and 9 Indy 8 and Indy 9 do not support explicit TLS with SMTP. If the SMTP server supports implicit TLS with SMTP, you may able to use implicit TLS with SMTP by stting the TIdSMTP.IOHandler to TIdSSLIOHandlerSocket and the port to the IdPORT_ssmtp constant in IdAssignedNumbers (465).


Ou seja, depende do meu servidor (estou usando o gmail, da google), e o Indy 8 neste caso dancei.

Mesmo se o servidor aceitar a conexão, não sei como utilizar essas informações para tornar o meu programa funcional.


Responder

30/03/2005

Massuda

... não sei como utilizar essas informações para tornar o meu programa funcional.
Este é o procedimento para instalar o suporte a SSL no Indy (você vai precisar disso para ter o componente TIdSSLIOHandlerSocket):[list:34474749ec][*:34474749ec]Vá no site [url=http://indy.fulgan.com/SSL/]indy.fulgan.com/SSL[/url][*:34474749ec]Baixe o arquivo indy_OpenSSL096m.zip[*:34474749ec]Deszipe esse arquivo em qualquer pasta/diretório.[*:34474749ec]Copie/mova as duas DLLs para a pasta/diretório onde está seu programa.[/list:u:34474749ec]No seu projeto Delphi, faça o seguinte:[list:34474749ec][*:34474749ec]No mesmo form onde está o componente TIdSMTP, inclua um componente [b:34474749ec]TIdSSLIOHandlerSocket[/b:34474749ec] (está na aba Indy I/O Handlers)[*:34474749ec]Usando o Object Inspector, atribua à propriedade [b:34474749ec]IOHandler[/b:34474749ec] do TIdSMTP o TIdSSLIOHandlerSocket recém colocado no form.[*:34474749ec]Atribua o valor 465 à propriedade Port do TIdSMTP.[*:34474749ec]Recompile seu programa[/list:u:34474749ec]Você terá que incluir na instalação do seu programa as duas DLLs que você baixou (libeay32.dll e ssleay32.dll).

Esse procedimento é parecido com o usado para incluir suporte a sites seguros usando o TIdHTTP.


Responder

30/03/2005

Tenil

No mesmo form onde está o componente TIdSMTP, inclua um componente TIdSSLIOHandlerSocket (está na aba Indy I/O Handlers)


Segui todos os passos e não tem esse componente [i:059e67c630][b:059e67c630]TIdSSLIOHandlerSocket[/b:059e67c630][/i:059e67c630] (uso o Delphi 6 com indy 8 ).

Devo copiar as DLLs para o diretório o meu projeto ou para o diretório do Delphi???


Responder

30/03/2005

Tenil

Em todo o caso, inclui as DLLs tanto na pasta do Delphi quanto na pasta do meu programa.

Kramba, que dificulidade...

Agradeço a paciência que todos estão tendo comigo., :D


Responder

30/03/2005

Faelcavalcanti

[quote:5ac91b74e7=´Massuda´]No mesmo form onde está o componente TIdSMTP, inclua um componente TIdSSLIOHandlerSocket (está na aba Indy I/O Handlers)


Segui todos os passos e não tem esse componente [i:5ac91b74e7][b:5ac91b74e7]TIdSSLIOHandlerSocket[/b:5ac91b74e7][/i:5ac91b74e7] (uso o Delphi 6 com indy 8 ).

Devo copiar as DLLs para o diretório o meu projeto ou para o diretório do Delphi???[/quote:5ac91b74e7]

Cara, estou usando a versão v.9.0.0.14 e já possui o componente [b:5ac91b74e7]TIdSSLIOHandlerSocket[/b:5ac91b74e7], na aba de componentes [b:5ac91b74e7]Indy I/O Handlers[/b:5ac91b74e7]. Inclusive ele dá suporte tanto para [b:5ac91b74e7]Client[/b:5ac91b74e7] como para [b:5ac91b74e7]Server[/b:5ac91b74e7].

:wink:
Falow!


Responder

30/03/2005

Massuda

...estou usando a versão v.9.0.0.14 e já possui o componente [b:a4fdfb33e1]TIdSSLIOHandlerSocket[/b:a4fdfb33e1], na aba de componentes [b:a4fdfb33e1]Indy I/O Handlers[/b:a4fdfb33e1]...
Desculpe... você tem razão, eu escrevi errado... :oops:

O componente TIdSSLIOHandlerSocket faz parte do Indy 9, mas você precisa das DLLs para poder utilizá-lo. Se você der uma olhada na unit IdSSLOpenSSLHeaders, verá que essas DLLs são carregadas dinamicamente pelo Indy quando necessário; se tentar usar SSL sem as DLLs, gera um erro.


Responder

30/03/2005

Tenil

Fiz o download da versão 9 e 10 do Indy, só que lá tem um alerta para que se instale primeiro o Service Pack 2 do Delphi 6. Como minha cópia é pir... ou melhor, versão educacional :D, não consegui fazer download do Service Pack do Delphi...

[url]http://www.atozed.com/indy/plus/Files.iwp[/url]

Indy Plus Files

Delphi 6

Indy requires both Service Pack 2 and RTL Update 3 Delphi 6 patches to be installed. If you receive the following error: ´InGlobal was compiled with a different version of System.rtl´, make sure you have Delphi 6 Update Pack 2 Installed. If you installed it previously, reinstall it.

Nossa... tow quase desistindo... :(


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar