Bom dia Paulo, Eu utilizo a função abaixo, testada e funcionando no Delphi 4 e BDS 2006:
uses MAPI; function EnviarEMail(const De, Para,CC, Assunto, Texto, Arquivo: string; Confirma: Boolean): Integer; var Msg: TMapiMessage; lpSender, lpRecepient, lpComCopia: TMapiRecipDesc; FileAttach: TMapiFileDesc; SM: TFNMapiSendMail; MAPIModule: HModule; Flags: Cardinal; begin // cria propriedades da mensagem FillChar(Msg, SizeOf(Msg), 0); with Msg do begin if (Assunto <> '') then lpszSubject := PChar(Assunto); if (Texto <> '') then lpszNoteText := PChar(Texto); //Corpo da Mensagem // remetente if (De <> '') then begin lpSender.ulRecipClass := MAPI_ORIG; lpSender.lpszName := PChar(De); lpSender.lpszAddress := PChar(De); lpSender.ulReserved := 0; lpSender.ulEIDSize := 0; lpSender.lpEntryID := nil; lpOriginator := @lpSender; end; // destinatário if (Para <> '') then begin lpRecepient.ulRecipClass := MAPI_TO; lpRecepient.lpszName := PChar(Para); lpRecepient.lpszAddress := PChar(Para); lpRecepient.ulReserved := 0; lpRecepient.ulEIDSize := 0; lpRecepient.lpEntryID := nil; nRecipCount := 1; lpRecips := @lpRecepient; end else if (CC <> '') then begin lpComCopia.ulRecipClass := MAPI_CC; lpComCopia.lpszName := PChar(CC); lpComCopia.lpszAddress := PChar(CC); lpComCopia.ulReserved := 0; lpComCopia.ulEIDSize := 0; lpComCopia.lpEntryID := nil; nRecipCount := 1; lpRecips := @lpComCopia; end else lpRecips := nil; // arquivo anexo if (Arquivo = '') then begin nFileCount := 0; lpFiles := nil; end else begin FillChar(FileAttach, SizeOf(FileAttach), 0); FileAttach.nPosition := Cardinal($FFFFFFFF); FileAttach.lpszPathName := PChar(Arquivo); nFileCount := 1; lpFiles := @FileAttach; end; end; // carrega dll e o método para envio do email MAPIModule := LoadLibrary(PChar(MAPIDLL)); if MAPIModule = 0 then Result := -1 else try if Confirma then Flags := MAPI_DIALOG or MAPI_LOGON_UI else Flags := 0; @SM := GetProcAddress(MAPIModule, 'MAPISendMail'); if @SM <> nil then Result := SM(0, Application.Handle, Msg, Flags, 0) else Result := 1; finally FreeLibrary(MAPIModule); end; end; [] Andrei Em 06/12/06, Paulo Sérgio Dias<[EMAIL PROTECTED]> escreveu: > Pessoal: > > Alguem tem alguma rotina que, a partir de um programa Delphi 7 > (ou D2006) chame o Outlook Express e monte um e-mail com um > arquivo atachado ? > > Encontrei algumas rotinas na Internet, mas as que funcionam > nao permitem atachar arquivos, e as que permitem atachar arquivos > nao funcionam direito. > > Obs.: Tem de ser pelo Outlook Express ou pelo leitor de e-mail padrao > do usuario. So' nao posso enviar diretamente (motivos especificos dos > meus usuarios). Por isso nao estou usando componentes para envio > de e-mail. > > Grato pela atencao de todos > Paulo