Erro envio email fora dominio
uso o seguinte código para envio de email
para os dominios fora da empresa dá o seguinte erro
503 no recipients need rcpt
alguém tem alguma dica ?
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
Curtidas 0
Respostas
Faelcavalcanti
16/03/2005
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!!!
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!!!
GOSTEI 0
Massuda
16/03/2005
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]
GOSTEI 0
Motta
16/03/2005
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 !
GOSTEI 0
Massuda
16/03/2005
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;
Quanto ao problema no envio, aviso aqui se eu lembrar de alguma coisa.
GOSTEI 0
Motta
16/03/2005
Tem razão !!
GOSTEI 0
Massuda
16/03/2005
[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)?
GOSTEI 0
Motta
16/03/2005
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 ?
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 ?
GOSTEI 0
Massuda
16/03/2005
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.
GOSTEI 0
Motta
16/03/2005
Como seria melhor então ?
GOSTEI 0
Massuda
16/03/2005
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].
GOSTEI 0
Motta
16/03/2005
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 !!
Agradeço pela ajuda !!
GOSTEI 0