Como enviar anexo usando Indy 10?

05/07/2008

5

Pessoal não estou conseguindo enviar anexo usando o Indy 10

Mudou alguma coisa? Antes no Indy 9 eu enviava normal, agora envia o e-mail mais não o anexo, qual a forma de enviar anexos usando indy 10?

Grato
Adriano.


Responder

Posts

No indy 9 usava assim
function TfrmBlibliotecas.EnviaPedEmail(Subject, FileName: String): Boolean;
var
  LidSMTP: TIdSMTP;
  LIdMessage : TIdMessage;
begin
  Result   := False;
  LidSMTP   := TIdSMTP.Create(nil);
  while not (LidSMTP.Connected) do   // enquanto não conectar, o programa vai ficar tentando conectar infinitamente.
  begin
    try
      LidSMTP.Disconnect;
      LidSMTP.Host          := FSMTP_Server;
      LidSMTP.Port          := FSMTP_Port;
      LidSMTP.Username      := FSMTP_Login;
      LidSMTP.Password      := FSMTP_Password;

      LidSMTP.AuthType   := atDefault;
      LidSMTP.Connect;
      if not LidSMTP.Connected then
        Exit;

      LIdMessage := TIdMessage.Create(nil);
      try
        LIdMessage.From.Text                   := FSMTP_From;
        LIdMessage.Recipients.EMailAddresses   := FSMTP_To;
        LIdMessage.MessageParts.Clear;
        {:Foi criado para enviar a mensagem que esta na descricao}
        LIdMessage.Body.Text := FSMTP_Message;

        TIdAttachment.Create(LIdMessage.MessageParts, FileName);

        LIdMessage.Subject       := Subject; //File_Name + ´ em ´ + FormatDateTime(´dd/mm/yyyy hh:mm´, Now);
        LIdMessage.Priority      := mpHighest;
        LidSMTP.Send(LIdMessage);
        {:Modificado por Adriano - Estou verificando se retorna alguma mensagem de volta para meu e-mail}
        LIdMessage.Headers.Values[´Return-Receipt-To´] := FSMTP_From;
        LIdMessage.Headers.Add(´disposition-notification-to: <FSMTP_From>´);
        LIdMessage.SaveToFile(´c:\LogErros.txt´);
        {:Fim da modificação}
        Result := True;
      finally
        LIdMessage.Free;
      end;
    except
      {Não conseguiu conectar, tenta conectar novamente em 1 minuto}
      Sleep(1000);
      Continue;
    end; // try
  end; // while
    LidSMTP.Disconnect;
    LidSMTP.Free;

end;


Mais este comando não é aceito pelo indy 10
[b:d6e0b5a32a][color=red:d6e0b5a32a] // TIdAttachment.Create(LIdMessage.MessageParts, FileName);[/color:d6e0b5a32a][/b:d6e0b5a32a]


Responder
Descobri amigos como anexar arquivos no Indy 10, está ai pra quem precisar

{:Este é para anexar arquivos no indy10 declarar no uses IdAttachmentFile} TIdAttachmentFile.Create(LIdMessage.MessageParts, FileName); {:este comando é para o indy 9, não funciona no indy 10} //TIdAttachment.Create(LIdMessage.MessageParts, FileName);



Uses IdAttachmentFile
function TfrmBlibliotecas.EnviaPedEmail(Subject, FileName: String): Boolean;
var
  LidSMTP: TIdSMTP;
  LIdMessage : TIdMessage;
begin
  Result   := False;
  LidSMTP   := TIdSMTP.Create(nil);
  while not (LidSMTP.Connected) do   // enquanto não conectar, o programa vai ficar tentando conectar infinitamente.
  begin
    try
      LidSMTP.Disconnect;
      LidSMTP.Host          := FSMTP_Server;
      LidSMTP.Port          := FSMTP_Port;
      LidSMTP.Username      := FSMTP_Login;
      LidSMTP.Password      := FSMTP_Password;

      LidSMTP.AuthType   := atDefault;
      LidSMTP.Connect;
      if not LidSMTP.Connected then
        Exit;

      LIdMessage := TIdMessage.Create(nil);
      try
        LIdMessage.From.Text                   := FSMTP_From;
        LIdMessage.Recipients.EMailAddresses   := FSMTP_To;
        LIdMessage.MessageParts.Clear;
        {:Foi criado para enviar a mensagem que esta na descricao}
        LIdMessage.Body.Text := FSMTP_Message;
        {:Este é para anexar arquivos no indy10 dechar no uses IdAttachmentFile}
        TIdAttachmentFile.Create(LIdMessage.MessageParts, FileName);
        {:este comando é para o indy 9, não funciona no indy 10}
        //TIdAttachment.Create(LIdMessage.MessageParts, FileName);

        LIdMessage.Subject       := Subject; //File_Name + ´ em ´ + FormatDateTime(´dd/mm/yyyy hh:mm´, Now);
        LIdMessage.Priority      := mpHighest;
        LidSMTP.Send(LIdMessage);
        {:Modificado por Adriano - Estou verificando se retorna alguma mensagem de volta para meu e-mail}
        LIdMessage.Headers.Values[´Return-Receipt-To´] := FSMTP_From;
        LIdMessage.Headers.Add(´disposition-notification-to: <FSMTP_From>´);
        LIdMessage.SaveToFile(´c:\LogErros.txt´);
        {:Fim da modificação}
        Result := True;
      finally
        LIdMessage.Free;
      end;
    except
      {Não conseguiu conectar, tenta conectar novamente em 1 minuto}
      Sleep(1000);
      Continue;
    end; // try
  end; // while
    LidSMTP.Disconnect;
    LidSMTP.Free;

end;



Responder

08/07/2008

Luizito

Para um envio completo de email com Indy 10 e RAD Studio:

[url=http://www.usercontrol.net/content/view/15/19/]Artigo[/url]

Um abraço.


Responder
Obrigado pela dica luizito, mais eu ja tinha resolvido este problema.

Valeu pelo link ai amigo


Responder