Fórum Erro envio email fora dominio #272604

16/03/2005

0

uso o seguinte código para envio de email

function TfrmConfigura.EnviarEmail(rem,dest,assun,msg : string):boolean;
  procedure GravaErro(erro : string);
  var ts : TStringList;
  begin
    ts := TStringList.Create;
    try
      ForceDirectories(´c:\logmail´);
      try
        ts.LoadFromFile(´c:\logmail\log.txt´);
      except
      end;
      ts.Add(DateTimeToStr(now));
      ts.Add(erro);
      ts.SaveToFile(´c:\logmail\log.txt´);
    finally
      ts.Free;
    end;
  end;
const p = ´******´;
begin
  try
    //Processo de reconhecimento no POP3 do UOL
    NMPOP31.AttachFilePath := ´.´;
    NMPOP31.DeleteOnRead := FALSE;
    NMPOP31.ReportLevel := Status_Basic;
    NMPOP31.TimeOut := 20000;
    NMPOP31.Host := ´10.19.7.12´;
    NMPOP31.Port := 110;
    NMPOP31.UserID := ´xxxx´;
    NMPOP31.Password := p;
    NMPOP31.Connect;
    //
    Result := True;
    NMSMTP1.Host := ´10.19.7.12´;
    NMSMTP1.Port := 25;
    NMSMTP1.UserID := ´xxxx´;
    NMSMTP1.Connect;
    if not NMSMTP1.Connected then
      Result := False;
    if Result then
    begin
      NMSMTP1.PostMessage.FromAddress := rem;
      NMSMTP1.PostMessage.ToAddress.Clear;
      NMSMTP1.PostMessage.ToAddress.Add(dest);
      NMSMTP1.PostMessage.Subject     := assun;
      NMSMTP1.PostMessage.Body.Text   := msg;
      NMSMTP1.PostMessage.Date := FormatDateTime(´dd/mm/yyyy hh:nn´,Now);
      NMSMTP1.SendMail;
      NMSMTP1.Disconnect;
      NMPOP31.Disconnect;
    end;
  except
    on e:exception do
    begin
      GravaErro(e.message);
      NMSMTP1.Disconnect;
      NMPOP31.Disconnect;
      Result := False;
    end;
  end;
end;



para os dominios fora da empresa dá o seguinte erro

503 no recipients need rcpt

alguém tem alguma dica ?


Motta

Motta

Responder

Posts

16/03/2005

Faelcavalcanti

Este componente têm suporte para autenticação de envio para o protocolo SMTP, caso não tenta com o [url=http://www.indyproject.org/]INDY[/url], um dos melhores e mais completos que acho. E têm muito exemplo lá, no caso de desespero para a migração!!!

Mas adiantando sobre o código, verifica se o host realmente existe. tipow, dá um ping. Verifica também opções para envio de e-mail, digo assim porque não sei qual o componente que estais utilizando!!!

Espero ter ajudado!!!


Responder

Gostei + 0

16/03/2005

Massuda

Algumas observações...[list:ff569a8a95][*:ff569a8a95]O IP do seu servidor de POP3/SMTP é da rede local... isso está correto?[*:ff569a8a95]No seu código, caso falhe na conexão com o servidor SMTP não vai desconectar do servidor POP3[*:ff569a8a95]A mensagem de erro indica que o servidor SMTP recebeu um pedido para enviar um e-mail sem destinatário... você tem certeza de que o parametro [b:ff569a8a95]dest[/b:ff569a8a95] contem um valor válido?[*:ff569a8a95]Seria prudente evitar utilizar os componentes da aba FastNet, porque eles não existem para versões mais recentes do Delphi (parece que a empresa fechou).[/list:u:ff569a8a95]


Responder

Gostei + 0

16/03/2005

Motta

Algumas observações...[list:363817f22d][*:363817f22d]O IP do seu servidor de POP3/SMTP é da rede local... isso está correto?[*:363817f22d]No seu código, caso falhe na conexão com o servidor SMTP não vai desconectar do servidor POP3[*:363817f22d]A mensagem de erro indica que o servidor SMTP recebeu um pedido para enviar um e-mail sem destinatário... você tem certeza de que o parametro [b:363817f22d]dest[/b:363817f22d] contem um valor válido?[*:363817f22d]Seria prudente evitar utilizar os componentes da aba FastNet, porque eles não existem para versões mais recentes do Delphi (parece que a empresa fechou).[/list:u:363817f22d]


1) sim é rede local, foi uma solução para envio de email, grava o texto numa tabela e uma app lê esta tabela e envia os emails

2) o NMPOP31.Disconnect;
no except não faria isto ??!!

3) Sim com certeza passei o destinatario

4) Não sabemos aqui se vamos migrar nossos sistemas, mas posso estudar utilizar outros componentes

Este código funciona para emails no próprio domínio da empresa, mas para fora dá este erro.

de qq forma grato !


Responder

Gostei + 0

16/03/2005

Massuda

2) o NMPOP31.Disconnect; no except não faria isto ??!!
No seu código...
    NMPOP31.Connect; 

    Result := True; 
    ...
    NMSMTP1.Connect; 
    if not NMSMTP1.Connected then 
      Result := False; 

    if Result then begin 
      ...
      NMSMTP1.Disconnect; 
      NMPOP31.Disconnect; 
    end; 
Se NMSMTP1.Connected for False, Result será False e não executa NMPOP31.Disconnect.

Quanto ao problema no envio, aviso aqui se eu lembrar de alguma coisa.


Responder

Gostei + 0

16/03/2005

Motta

Tem razão !!


Responder

Gostei + 0

16/03/2005

Massuda

[quote:3ba580665b=´Massuda´]O IP do seu servidor de POP3/SMTP é da rede local... isso está correto?


1) sim é rede local, foi uma solução para envio de email, grava o texto numa tabela e uma app lê esta tabela e envia os emails[/quote:3ba580665b]Isso é uma coisa que eu não entendi... afinal, você tem um servidor de POP3/SMTP na sua rede local ou você tem um app que faz papel dos servidores (tipo um servidor proxy)?


Responder

Gostei + 0

16/03/2005

Motta

Nosso banco de produção não teve a package que faz o envio de email instalada, o último BDA que contratamos não recomendou esta instalaçõa com a instancia funcionando, como vamos mudar o banco de nt para linux e de 8i para 9 , revolvemos aguardar, enquanto isto fiz esta aplicação para o envio de emais via plsql, um quebra-galho.

Faz a caminho de envio de emails não seria este, acessar o servidor de smpt/pop e por ele enviar o email , mesmo na rede local ?


Responder

Gostei + 0

16/03/2005

Massuda

Nosso banco de produção não teve a package que faz o envio de email instalada ... enquanto isto fiz esta aplicação para o envio de emais via plsql, um quebra-galho.
Fiquei mais confuso... o código que você postou é parte do programa quebra galho para envio de e-mail?

Se sim, nesse caso NMPOP31.Host e NMSMTP1.Host deveriam ser o nome do seu servidor POP3/SMTP na internet (por exemplo, ´mail.algumprovedor.com.br´). Para facilitar a vida, seu programa deveria ser executado na máquina que está conectada diretamente à internet, assim não tem problema de converter IP local/externo.


Responder

Gostei + 0

16/03/2005

Motta

Como seria melhor então ?


Responder

Gostei + 0

16/03/2005

Massuda

Como seria melhor então ?
Não! Eu acho que esse caminho é viável.

Pelo que entendi, seu programa (o que está tendo problemas) pega de uma tabela do BD os e-mails e manda. Acho que a única correção agora seria por os nomes corretos dos servidores de POP3/SMTP.

Uma alternativa seria você usar algo parecido com sendmail para enviar os e-mails, tipo o [url=http://www.blat.net/]Blat[/url].


Responder

Gostei + 0

16/03/2005

Motta

Acho que o problema é que o TNMSMTP não tem autenticação por password é nosso SMTP é autenticado, aí o problema é do componente, talvez seja melhor partir para o uso de outro mesmo.

Agradeço pela ajuda !!


Responder

Gostei + 0

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

Aceitar