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

Responder a