Array
(
)

Erro ao enviar e-mail pelo delphi

Franthesco
   - 20 dez 2005

Gente, estou tentando enviar e-mail pelo delphi, mas dá o seguinte erro:

Project Project1.exe raised exception class EIdProtocolReplyError with message ´<xxx@gmail.com>: Relay access denied
´.Process stopped. Use Step or Run to continue.

Será que alguem pode dar uma ajudinha?

Uso os componentes IDSmtp e IDMessage.

Segui este exemplo: http://www.clubedelphi.net/EMails.html

Obrigado!


Massuda
   - 20 dez 2005

Não tenho certeza, mas acho que esse erro ocorre quando você não faz login no servidor SMTP. Dê uma olhada [url=http://forum.clubedelphi.net/viewtopic.php?t=65357]neste tópico[/url] para um exemplo (bem) básico de envio de emails usando Indy.


Franthesco
   - 20 dez 2005

Massuda, tentei fazer como no exemplo, mas não obtive exito.

Alguma outra sugestão?

Obrigado!


Massuda
   - 21 dez 2005

Qual serviço de email você está usando? Alguns requerem autenticação, outros podem precisar conexão segura.

Seria interessante postar seu código aqui.


Franthesco
   - 21 dez 2005

Estava usando este código, com smtp do brturbo:

procedure TForm1.Button1Click(Sender: TObject);
begin
with smtp do
begin
//Nome do host
Host:= edit1.Text;
//Nome do usuário, normalmente o e-mail
Username:= edit2.Text;
//Conecta com o servidor smtp
Connect();
end;
with IdMessage do
begin
//O seu endereço de e-mail
From.Address := edit2.Text;
//Aqui vai o endereço de e-mail para o qual você quer mandar o e-mail
Recipients.EMailAddresses := Edit3.Text;
//O assunto da mensagem
Subject := edit4.Text;
//A mensagem que você quer mandar
Body.Text := MmMensagem.Lines.Text;
MessageParts.Clear;
end;
//Envia a mensagem
SMTP.Send(IdMessage);
end;

procedure TForm1.smtpStatus(ASender: TObject; const AStatus: TIdStatus;
const AStatusText: String);
begin
mmStatus.Lines.Add(AStatusText);
end;

Aquele erro, onde aparece o email, é o email do destinatario, eu consigo fazer a conexão com o brturbo, mas dá erro no email da pessoa para quem estou tentando enviar...

Após sua resposta, meu código ficou assim:

procedure TForm1.Button1Click(Sender: TObject);
begin
// monte sua mensagem usando um TIdMessage
IdMessage1.Recipients.EMailAddresses := Edit2.Text;
IdMessage1.Subject := ´TESTE´;
IdMessage1.Body.Text := Edit3.Text;

// nome do seu servidor SMTP
IdSMTP1.Host := ´smtp.brturbo.com.br´;

// alguns servidores SMTP requerem login outros não
IdSMTP1.AuthenticationType := atLogin;
IdSMTP1.Username := ´xxx´; //usei meu nome de usuário
IdSMTP1.Password := ´xxx´; //usei a senha

// conecta com o servidor
IdSMTP1.Connect;
try
IdSMTP1.Send(IdMessage1);
finally
IdSMTP1.Disconnect;
end;



Obrigado!


Massuda
   - 21 dez 2005

Não uso esse provedor, mas no tópico que indiquei para você, tem um post explicando que pode ser necessário conectar com o servidor POP3 primeiro (use um TIdPOP3) e permanecer conectado até terminar de usar o servidor SMTP.

Estou imaginando que o email de destino existe.


Franthesco
   - 21 dez 2005

Obrigado pela ajuda Massuda!

Era necessário fazer a conexão pop3 mesmo.

Muito Obrigado!


Franthesco
   - 21 dez 2005

Bem, consegui enviar os e-mails, agora estou com outro problema:

Envio o 1º e-mail, td bem.

Quando vou enviar o 2º, ele envia, mas com o texto q foi para o primeiro junto.

Já tentei usar o comando IdMessage1.Body.Clear, ou IdMessage.Clear, mas não adianta.

Alguem sabe o que pode estar acontecendo?