Urgente - Envio de emails usando NMSMTP

10/12/2003

1

Só consigo mandar um email quando o servidor do email para quem estou enviando é o mesmo que eu conectei e não consigo saber porque.
Preciso conectar o componente com o servidor terra, mas necessito enviar para qualquer servidor... oq eu façoooooooooo????


Responder

Posts

11/12/2003

Deus

Não dá pra sabermos o porquê sem algumas informações! :) Coloque o código fonte do envio aqui, e diga se você recebe alguma mensagem de erro quando tenta mandar para outro servidor.

Espero resposta. Abraços, dEUS.


Responder

11/12/2003

Lylyka

O Código é este:

NMSMTP1.Host := ´smtp.terra.com.br´;
NMSMTP1.Port := 25;
Nome := ´´;
N := Length(DMSIAM.TPessoaEmail.AsString);
For I := 1 To N Do
Begin
If Copy(DMSIAM.TPessoaEmail.AsString, I, 1) = ´@´ Then
Break
Else
Nome := Nome + Copy(DMSIAM.TPessoaEmail.AsString, I, 1);
End;

NMSMTP1.UserID := Nome;
NMSMTP1.Connect;

NMSMTP1.PostMessage.ToAddress.Clear;
NMSMTP1.PostMessage.Attachments.Clear;

NMSMTP1.PostMessage.FromAddress := TUsuarioEmail.value;
NMSMTP1.PostMessage.FromName := TUsuarioNome.value;
NMSMTP1.PostMessage.Subject := ´Requisição de Compras´;
NMSMTP1.PostMessage.ToAddress.Add(DMSIAM.TPessoaEmail.AsString);
NMSMTP1.PostMessage.Attachments.Add(NomeArquivo);
NMSMTP1.PostMessage.Body.Add(´Segue em anexo a Requisição´);
NMSMTP1.SendMail;

ShowMessage(´E-mail enviado com sucesso´);
NMSMTP1.disconnect;

Se o email que estou enviando é para o terra, funciona, mas se for para outro servidor, dá erro: ´554 Error: No valid recipients´

O que eu estou fazendo de errado?


Responder

11/12/2003

Deus

Bem, experimente utilizar uma função para enviar mensagem, para ficar mais fácil a debugação.. com essa aqui:

procedure EnviarMensagem(stHost, stFromAdd, stFromName, stPara, stAssunto, stMsg, stAtt:string);
var i:integer;
begin
 with NMSMTP1 do
 begin
   ClearParams := true;
   Host := stHost;

   if not Connected then
     Connect;

   with PostMessage do
   begin
     FromAddress := stFromAdd;
     FromName := stFromName;

     if not (Trim(stAtt) = ´´) then
       Attachments.Add(stAtt); 

     Subject := stAssunto;
     Body.Text := stMsg;

     ToAddress.Clear;
     ToAddress.Add(stPara);
     SendMail;
   end;
 end;
end;


Aí, quando você quisesse enviar a mensagem, você faria:

EnviarMensagem(´smtp.uol.com.br´, 
               TUsuarioEmail.value,
               TUsuarioNome.value,
               DMSIAM.TPessoaEmail.AsString,
               ´Requisição de Compras´,
               ´Segue em anexo a Requisição´,
               NomeArquivo);


Se você continuar tendo problemas, sugiro que mude o componente para [i:ed674cff49]IdSMTPServer[/i:ed674cff49], da coleção de componentes [url=http://www.indyproject.org/download/Indy9.html]IndyProject[/url], que é muito bom e é bem mais utilizado - sem falar que é [i:ed674cff49]OpenSource[/i:ed674cff49]. ;) É só clicar [url=http://www.indyproject.org/download/Indy9.html]Aqui[/url]. ;)

Espero ter ajudado! Abraços, dEUS.


Responder