Erro ao enviar e-mail pelo delphi
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!
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!
Franthesco
Curtidas 0
Respostas
Massuda
20/12/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.
GOSTEI 0
Franthesco
20/12/2005
Massuda, tentei fazer como no exemplo, mas não obtive exito.
Alguma outra sugestão?
Obrigado!
Alguma outra sugestão?
Obrigado!
GOSTEI 0
Massuda
20/12/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.
Seria interessante postar seu código aqui.
GOSTEI 0
Franthesco
20/12/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!
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!
GOSTEI 0
Massuda
20/12/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.
Estou imaginando que o email de destino existe.
GOSTEI 0
Franthesco
20/12/2005
Obrigado pela ajuda Massuda!
Era necessário fazer a conexão pop3 mesmo.
Muito Obrigado!
Era necessário fazer a conexão pop3 mesmo.
Muito Obrigado!
GOSTEI 0
Franthesco
20/12/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?
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?
GOSTEI 0