Tente esta rotina, é a que eu uso. Ela abre o e-mail padrão, com os anexos e 
tudo.

Obs: Substitua a função msgInformacao por showMessage, ou MessageDlg, ou 
MessageBox.

Uses
  Classes, Forms, SysUtils, Mapi;

function EnviarEMail( pTo, pCC, pCCo, pAssunto, pTexto: PChar; aFiles: Array Of 
PChar ): Cardinal;
var
  sTo, sCC, sCCo, sAux : String;
  MapiMessage          : TMapiMessage;
  pRecipiente          : PMapiRecipDesc ;
  aRecipiente          : Array Of TMapiRecipDesc;
  aArquivoEnvio        : Array of TMapiFileDesc;
  i, iRecip, iFiles    : Integer;
begin
  iRecip := 0;
  { Define destinatários TO
  }
  sTo := '';
  if Length(pTo) > 0 Then begin
    sAux := pTo;
    if sAux[Length(sAux)] <> ';' Then
      sAux := sAux + ';';
    while Pos( ';', sAux ) > 0 do begin
      Inc( iRecip );
      sTo := sTo + Copy( sAux, 1, Pos( ';', sAux ) );
      Delete( sAux, 1, Pos( ';', sAux ) );
    end;
  end;
  { Define destinatários CC
  }
  sCC := '';
  If Length(pCC) > 0 Then begin
    sAux := pCC;
    If sAux[Length(sAux)] <> ';' Then
      sAux := sAux + ';';
    while Pos( ';', sAux ) > 0 do begin
      Inc( iRecip );
      sCC := sCC + Copy( sAux, 1, Pos( ';', sAux ) );
      Delete( sAux, 1, Pos( ';', sAux ) );
    end;
  end;
  { Define destinatários CCo
  }
  sCCo := '';
  If Length(pCCo) > 0 Then begin
    sAux := pCCo;
    If sAux[Length(sAux)] <> ';' Then
      sAux := sAux + ';';
    while Pos( ';', sAux ) > 0 do begin
      Inc( iRecip );
      sCCo := sCCo + Copy( sAux, 1, Pos( ';', sAux ) );
      Delete( sAux, 1, Pos( ';', sAux ) );
    end;
  end;
  { cria o tamanho do array de recipiente
  }
  SetLength(aRecipiente, iRecip);
  I := 0;
  { Define recipientes TO
  }
  while sTO <> '' do begin
    Result := MAPIResolveName( 0, 0, PChar( Copy(sTo, 1, Pos(';', sTo) - 1 ) ), 
0, 0, pRecipiente );
    { VERIFICA SE NÃO OCORREU ERROS
    }
    if (Result <> SUCCESS_SUCCESS) Then begin
      case Result Of
        MAPI_E_AMBIGUOUS_RECIPIENT : msgInformacao('O destinatário não pode ser 
resolvido!!'          ).ShowModal;
        MAPI_E_FAILURE             : msgInformacao('Ocorreram um ou mais erros 
não especificados!'    ).ShowModal;
        MAPI_E_INSUFFICIENT_MEMORY : msgInformacao('Memória insuficiente!!'     
                      ).ShowModal;
        MAPI_E_NOT_SUPPORTED       : msgInformacao('Operação não suportada pelo 
sistema de mensagens!').ShowModal;
      else
        msgInformacao('Erro desconhecido!').ShowModal;
      end;
      Abort;
    end;
    aRecipiente[i].ulReserved   := pRecipiente.ulReserved;
    aRecipiente[i].lpszName     := pRecipiente.lpszName;
    aRecipiente[i].lpszAddress  := pRecipiente.lpszAddress;
    aRecipiente[i].ulEIDSize    := pRecipiente.ulEIDSize;
    aRecipiente[i].lpEntryID    := pRecipiente.lpEntryID;
    aRecipiente[i].ulRecipClass := MAPI_TO;
    delete( sTO, 1, Pos( ';', sTO ) );
    Inc( I );
  end;
  { Define recipientes CC
  }
  while sCC <> '' do begin
    Result := MAPIResolveName( 0, 0, PChar( Copy( sCC, 1, Pos(';', sCC) - 1 ) 
), 0, 0, pRecipiente );
    { VERIFICA SE NÃO OCORREU ERROS
    }
    if (Result <> SUCCESS_SUCCESS) Then begin
      case Result Of
        MAPI_E_AMBIGUOUS_RECIPIENT : msgInformacao('O destinatário não pode ser 
resolvido!!'          ).ShowModal;
        MAPI_E_FAILURE             : msgInformacao('Ocorreram um ou mais erros 
não especificados!'    ).ShowModal;
        MAPI_E_INSUFFICIENT_MEMORY : msgInformacao('Memória insuficiente!!'     
                      ).ShowModal;
        MAPI_E_NOT_SUPPORTED       : msgInformacao('Operação não suportada pelo 
sistema de mensagens!').ShowModal;
      else
        msgInformacao('Erro desconhecido!').ShowModal;
      end;
      Abort;
    end;
    aRecipiente[i].ulReserved   := pRecipiente.ulReserved;
    aRecipiente[i].lpszName     := pRecipiente.lpszName;
    aRecipiente[i].lpszAddress  := pRecipiente.lpszAddress;
    aRecipiente[i].ulEIDSize    := pRecipiente.ulEIDSize;
    aRecipiente[i].lpEntryID    := pRecipiente.lpEntryID;
    aRecipiente[i].ulRecipClass := MAPI_CC;
    delete( sCC, 1, Pos( ';', sCC ) );
    inc( I );
  end;
  { Define recipientes BCC
  }
  while sCCo <> '' do begin
    Result := MAPIResolveName( 0, 0, PChar( Copy( sCCo, 1, Pos(';', sCCo) - 1 ) 
), 0, 0, pRecipiente );
    { VERIFICA SE NÃO OCORREU ERROS
    }
    if (Result <> SUCCESS_SUCCESS) Then begin
      case Result Of
        MAPI_E_AMBIGUOUS_RECIPIENT : msgInformacao('O destinatário não pode ser 
resolvido!!'          ).ShowModal;
        MAPI_E_FAILURE             : msgInformacao('Ocorreram um ou mais erros 
não especificados!'    ).ShowModal;
        MAPI_E_INSUFFICIENT_MEMORY : msgInformacao('Memória insuficiente!!'     
                      ).ShowModal;
        MAPI_E_NOT_SUPPORTED       : msgInformacao('Operação não suportada pelo 
sistema de mensagens!').ShowModal;
      else
        msgInformacao('Erro desconhecido!').ShowModal;
      end;
      Abort;
    end;
    aRecipiente[i].ulReserved   := pRecipiente.ulReserved;
    aRecipiente[i].lpszName     := pRecipiente.lpszName;
    aRecipiente[i].lpszAddress  := pRecipiente.lpszAddress;
    aRecipiente[i].ulEIDSize    := pRecipiente.ulEIDSize;
    aRecipiente[i].lpEntryID    := pRecipiente.lpEntryID;
    aRecipiente[i].ulRecipClass := MAPI_BCC;
    delete( sCCo, 1, Pos( ';', sCCo ) );
    Inc( I );
  end;
  //
  iFiles := Length( aFiles );
  { cria o tamanho do array de anexos
  }
  SetLength(aArquivoEnvio, iFiles);
  { indica os parâmetros para cada recepiente de anexos
  }
  for I := 0 To High(aArquivoEnvio) do begin
    aArquivoEnvio[i].ulReserved := 0;
    aArquivoEnvio[i].flFlags := 0;
    aArquivoEnvio[i].nPosition := 0;
    aArquivoEnvio[i].lpszPathName := aFiles[I];
    aArquivoEnvio[i].lpszFileName := Nil;
    aArquivoEnvio[i].lpFileType := Nil;
  end;
  { configura o MapiMessage para ser usando pelo MapiSendMail
  }
  with MapiMessage do begin
    ulReserved         := 0;
    lpszSubject        := pAssunto;
    lpszNoteText       := pTexto;
    lpszMessageType    := 'HTML';
    lpszDateReceived   := Nil;
    lpszConversationID := Nil;
    flFlags            := 0;
    lpOriginator       := Nil;
    nRecipCount        := iRecip;
    lpRecips           := @aRecipiente[0];
    nFileCount         := iFiles;
    lpFiles            := @aArquivoEnvio[0];
  end;
  { ativo o e-mail usado pelo usuário e coloca o destinatário, Assunto,corpo do 
e-mail e anexos
  }
  Result := MapiSendMail(0, Application.Handle, MapiMessage, MAPI_DIALOG or 
MAPI_LOGON_UI or MAPI_NEW_SESSION, 0);
  { caso você queira que não seja ativado o e-mail, apenas enviando a mensagem 
use a
    linha abaixo no lugar da linha acima.
  }
  // Result := MapiSendMail( 0, 0, MapiMessage, 0, 0 );
  If Result <> 0 Then
    msgInformacao('Erro no envio').ShowModal;
  { libera a memória alocada para o Recipiente
  }
  MAPIFreeBuffer( pRecipiente );
end;


Jefferson Bompadre

cel: (11) 7165-4146

[EMAIL PROTECTED]

[EMAIL PROTECTED]





  ----- Original Message ----- 
  From: Marcello 
  To: [EMAIL PROTECTED] 
  Sent: Thursday, November 25, 2004 2:53 PM
  Subject: RES: [delphi-br] Enviar e-mail com anexo via programacao


  essa rotina não funcionou comigo, alguém conseguiu usa-la????

    _____  

  De: Marcos Esteves Simao (GERIN) [mailto:[EMAIL PROTECTED] 
  Enviada em: quinta-feira, 25 de novembro de 2004 10:41
  Para: '[EMAIL PROTECTED]'
  Assunto: RES: [delphi-br] Enviar e-mail com anexo via programacao


  Creio que deva declarar a unit ShellAPI


  procedure Tfrm_RCP.btn_EnviaEMAIL(Sender: TObject);
  var
      pEMail: String;
  begin
         pEMail:= 'mailto:[EMAIL PROTECTED] da
  mensagem"CAMINHO e NOME Arquivo Anexo" '

         {$ifdef win32}
         ShellExecute(Handle,'Open',pChar(pEmail),nil,nil,sw_Show);
         {$endif}

  end;



  Marcos Esteves Simão
  Programador de Computador - Unimed Vitória
  [EMAIL PROTECTED] 
  GERIN - CODES

  -----Mensagem original-----
  De: Vanderlei [mailto:[EMAIL PROTECTED]
  Enviada em: quinta-feira, 25 de novembro de 2004 09:24
  Para: [EMAIL PROTECTED]
  Assunto: [delphi-br] Enviar e-mail com anexo via programacao


  Pessoal,

  Preciso enviar um e-mail com anexo via programação, mas nao estou
  encontrando uma rotina q faça isso, alguem
  teria isso pra me enviar?


  no aguardo


  Vanderlei

  [As partes desta mensagem que não continham texto foram removidas]



  --
  <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

  Para ver as mensagens antigas, acesse:
  http://br.groups.yahoo.com/group/delphi-br/messages

  Para falar com o moderador, envie um e-mail para:
  [EMAIL PROTECTED] ou [EMAIL PROTECTED]

  Links do Yahoo! Grupos








  -- 
  <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

  Para ver as mensagens antigas, acesse:
  http://br.groups.yahoo.com/group/delphi-br/messages

  Para falar com o moderador, envie um e-mail para:
  [EMAIL PROTECTED] ou [EMAIL PROTECTED]




  Yahoo! Grupos, um serviço oferecido por:      

  PUBLICIDADE

  <http://br.rd.yahoo.com/SIG=12aemeni1/M=264379.5078783.6203979.1588051/D=brc
  lubs/S=2137111264:HM/EXP=1101472872/A=2332652/R=0/id=noscript/SIG=119058f8i/
  *http://br.download.yahoo.com/messenger/>        

    _____  

  Links do Yahoo! Grupos


  *      Para visitar o site do seu grupo na web, acesse:
  http://br.groups.yahoo.com/group/delphi-br/
    

  *      Para sair deste grupo, envie um e-mail para:
  [EMAIL PROTECTED]
  <mailto:[EMAIL PROTECTED]> 
    

  *      O uso que você faz do Yahoo! Grupos está sujeito aos Termos do
  Serviço do Yahoo! <http://br.yahoo.com/info/utos.html> . 




  [As partes desta mensagem que não continham texto foram removidas]



  -- 
  <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

  Para ver as mensagens antigas, acesse:
  http://br.groups.yahoo.com/group/delphi-br/messages

  Para falar com o moderador, envie um e-mail para:
  [EMAIL PROTECTED] ou [EMAIL PROTECTED]



        Yahoo! Grupos, um serviço oferecido por: 
             
             
                      
             
       


------------------------------------------------------------------------------
  Links do Yahoo! Grupos

    a.. Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/delphi-br/
      
    b.. Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]
      
    c.. O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço 
do Yahoo!. 



[As partes desta mensagem que não continham texto foram removidas]



-- 
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

Para ver as mensagens antigas, acesse:
 http://br.groups.yahoo.com/group/delphi-br/messages

Para falar com o moderador, envie um e-mail para:
 [EMAIL PROTECTED] ou [EMAIL PROTECTED]
 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/delphi-br/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 



Responder a