Valeu,

Não testei ainda mas vou guarda-la para uso futuro.

[]'s


On Tue, 26 Oct 2004 17:01:59 -0200, Prisma Sistemas - Moacir
<[EMAIL PROTECTED]> wrote:
> Joubert,
> 
> Uso esta função com de maneira satisfatoria  no outlook express. Veja se te 
> serve.
> 
> Inclua a unit   MAPI no uses do modulo
> 
> ======================================
> Function  SendMail( pTo,
>                     pCC,
>                     pCCo,
>                     pAssunto,
>                     pTexto: pChar;
>                     aFiles: Array Of PChar ) : String;
> var
>   iRetorno : cardinal;
>   sTo, sCC, sCCo, sAux: String;
>   MapiMessage: TMapiMessage;
>   pRecipiente: PMapiRecipDesc ;
>   aRecipiente :array of TMapiRecipDesc ;
>   aArquivoEnvio: array of  TMapiFileDesc ;
>   i, iRecip, iFiles:integer;
> Const
>    ERRO_MAPI_AMBIGUOUS_RECIPIENT= 'O destinatário não pode ser resolvido!!';
>    ERRO_MAPI_FAILURE            = 'Ocorreram erros não 
> especificados!'+#13+'Verifique se o Outlook Express é o sistema de mensagens
> padrão.';
>    ERRO_MAPI_INSUFFICIENT_MEMORY= 'Memória insuficiente!!';
>    ERRO_MAPI_NOT_SUPPORTED      = 'Operação não suportada pelo sistema de 
> mensagens!';
> begin
>   iRecip := 0;
>   //  Define destinatários TO
>   sTo    := '';
>   If Assigned( pTo ) 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 Assigned( pCC ) 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 Assigned( pCCo ) 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
>       iRetorno                      := MAPIResolveName( 0, 0, PChar( Copy( 
> sTo, 1, Pos(';', sTo) - 1 ) ), 0, 0, pRecipiente );
> 
>     // VERIFICA  SE NÃO OCORREU ERROS
>     If (iRetorno <> SUCCESS_SUCCESS) Then
>     begin
>        Case iRetorno Of
>          MAPI_E_AMBIGUOUS_RECIPIENT: Result:= ERRO_MAPI_AMBIGUOUS_RECIPIENT;
>          MAPI_E_FAILURE            : Result:= ERRO_MAPI_FAILURE            ;
>          MAPI_E_INSUFFICIENT_MEMORY: Result:= ERRO_MAPI_INSUFFICIENT_MEMORY;
>          MAPI_E_NOT_SUPPORTED      : Result:= ERRO_MAPI_NOT_SUPPORTED      ;
>        else
>          Result:= 'Erro ('+IntToStr(iRetorno)+') desconhecido !';
>        end;
>        Exit;
>     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
>     iRetorno := MAPIResolveName( 0, 0, PChar( Copy( sCC, 1, Pos(';', sCC) - 
> 1 ) ), 0, 0, pRecipiente );
>     // VERIFICA  SE NÃO OCORREU ERROS
>     If (iRetorno <> SUCCESS_SUCCESS) Then
>     begin
>        Case iRetorno Of
>          MAPI_E_AMBIGUOUS_RECIPIENT: Result:= ERRO_MAPI_AMBIGUOUS_RECIPIENT;
>          MAPI_E_FAILURE            : Result:= ERRO_MAPI_FAILURE            ;
>          MAPI_E_INSUFFICIENT_MEMORY: Result:= ERRO_MAPI_INSUFFICIENT_MEMORY;
>          MAPI_E_NOT_SUPPORTED      : Result:= ERRO_MAPI_NOT_SUPPORTED      ;
>        else
>          Result:= 'Erro ('+IntToStr(iRetorno)+') desconhecido !';
>        end;
>        Exit;
>     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
>     iRetorno := MAPIResolveName( 0, 0, PChar( Copy( sCCo, 1, Pos(';', 
> sCCo) - 1 ) ), 0, 0, pRecipiente );
>     // VERIFICA  SE NÃO OCORREU ERROS
>     If (iRetorno <> SUCCESS_SUCCESS) Then
>     begin
>        Case iRetorno Of
>          MAPI_E_AMBIGUOUS_RECIPIENT: Result:= ERRO_MAPI_AMBIGUOUS_RECIPIENT;
>          MAPI_E_FAILURE            : Result:= ERRO_MAPI_FAILURE            ;
>          MAPI_E_INSUFFICIENT_MEMORY: Result:= ERRO_MAPI_INSUFFICIENT_MEMORY;
>          MAPI_E_NOT_SUPPORTED      : Result:= ERRO_MAPI_NOT_SUPPORTED      ;
>        else
>          Result:= 'Erro ('+IntToStr(iRetorno)+') desconhecido !';
>        end;
>        Exit;
>     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    := Nil;
>     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, 0, 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.
>   iRetorno := MapiSendMail( 0, 0, MapiMessage, 0, 0 );
> 
>   If iRetorno <> 0 Then
>      iRetorno:=MapiSendMail(0, 0, MapiMessage, MAPI_DIALOG or MAPI_LOGON_UI 
> or MAPI_NEW_SESSION, 0);
> 
>   If iRetorno <> 0 Then
>      Result:='Erro no envio ('+IntToStr(iRetorno)+')';
> 
>   // libera a memória alocada para o Recipiente
>   MAPIFreeBuffer( pRecipiente );
> End;
> 
> ======================================
> [ ]´s
> Moacir
> 
> 
> ----- Original Message ----- 
> From: "Joubert Rinaldi" <[EMAIL PROTECTED]>
> To: <[EMAIL PROTECTED]>
> Sent: Tuesday, October 26, 2004 4:53 PM
> Subject: Re: [delphi-br] Re: Envio de email pelo OutLook
> 
> 
> 
> Já procurei em tudo quanto é canto uma forma de mandar e-mail pelo
> Outlook com anexo e não achei nada.
> 
> O melhor a fazer é mudar a forma de manda-los.
> 
> 
> 
> 
> []'s
> 
> 
> On Tue, 26 Oct 2004 04:05:14 -0000, ms_goncalves <[EMAIL PROTECTED]> 
> wrote:
> >
> > Oi Mariana,
> >
> > > Tenho um projeto de envio de email que foi desenvolvido por outro
> > > programador a algum tempo.
> >
> >    "foi desenvolvido por outro programador" tudo bem ainda vai se
> > tiver bem documentado... mas, com "a algum tempo" aih eh mortal! :)
> >
> > > como meu gerente quer.
> >
> >    Sugiro vc refazer a funcao usando um daqueles componentes q ligam
> > o Delphi ao Office. Se estiver usando o Delphi5 pode usar o
> > componente TNMSMTP (paleta FastNet).
> >
> > []s
> >
> > MSG
> >
> > --- Em [EMAIL PROTECTED], "Mariana" <[EMAIL PROTECTED]> escreveu
> >
> >
> > >
> > > Amigos...
> > > Tenho um projeto de envio de email que foi desenvolvido por outro
> > > programador a algum tempo.
> > > Ele funciona legal, e envia o email pelo OutLook deixando uma cópia
> > > nos itens enviados como meu gerente quer.
> > > Só que agora eu tenho que anexar arquivos nos emails a serem
> > > enviados, e eu gostaria de saber se existe uma maneira de fazer
> > isso
> > > no código que já existe ou se tenho que refazer este código.
> > > Segue o código:
> > >
> > > AssignFile(Arq_mail, sFileN );
> > > Rewrite(Arq_mail);
> > > writeLn(Arq_mail,'From: ');
> > > writeLn(Arq_mail,'To: '+ sMailDest );
> > > writeLn(Arq_mail,'Cc: '+ sCopia );
> > > writeLn(Arq_mail,'Bcc: '+ sCopiaOculta );
> > > writeLn(Arq_mail,'Subject: '+ sSubject );
> > > writeLn(Arq_mail,'Date: ');
> > > writeLn(Arq_mail,'MIME-Version: 1.0');
> > > writeLn(Arq_mail,'Content-Type: multipart/alternative;');
> > > writeLn(Arq_mail,'        boundary="----
> > > =_NextPart_000_003E_01C33CDC.81459AC0"');
> > > writeLn(Arq_mail,'X-Priority: 3');
> > > writeLn(Arq_mail,'X-MSMail-Priority: Normal');
> > > writeLn(Arq_mail,'X-Unsent: 1');
> > > writeLn(Arq_mail,'X-MimeOLE: Produced By Microsoft MimeOLE
> > > V6.00.2800.1165');
> > > writeLn(Arq_mail,' ');
> > > writeLn(Arq_mail,'This is a multi-part message in MIME format.');
> > > writeLn(Arq_mail,' ');
> > > writeLn(Arq_mail,'------=_NextPart_000_003E_01C33CDC.81459AC0');
> > > writeLn(Arq_mail,'Content-Type: text/plain;');
> > > writeLn(Arq_mail,'        charset="iso-8859-1"');
> > > writeLn(Arq_mail,'Content-Transfer-Encoding: quoted-printable');
> > > writeLn(Arq_mail,' ');
> > >
> > > writeLn(Arq_mail,'------=_NextPart_000_003E_01C33CDC.81459AC0');
> > > writeLn(Arq_mail,'Content-Type: text/html;');
> > > writeLn(Arq_mail,'        charset="iso-8859-1"');
> > > writeLn(Arq_mail,'Content-Transfer-Encoding: quoted-printable');
> > > writeLn(Arq_mail,' ');
> > > writeLn(Arq_mail,'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0
> > > Transitional//EN">');
> > > writeLn(Arq_mail,'<HTML><HEAD>');
> > > writeLn(Arq_mail,'<META http-equiv=3DContent-Type
> > > content=3D"text/html; = charset=3Diso-8859-1">');
> > > writeLn(Arq_mail,'<META content=3D"MSHTML 6.00.2800.1170"
> > > name=3DGENERATOR>');
> > > writeLn(Arq_mail,'<STYLE></STYLE>');
> > > writeLn(Arq_mail,'</HEAD>');
> > > writeLn(Arq_mail,'<BODY bgColor=3D#fffff0>');
> > > writeLn(Arq_mail,'');
> > > For nQtLines := 0 to  memoHtml.Lines.Count - 1  do
> > >     writeLn(Arq_mail, memoHtml.Lines.Strings[nQtLines]);
> > >
> > > CloseFile(Arq_mail);
> > > {$I+}
> > > if lAbrir Then
> > >   ShellExecute(Handle,'open', PChar( sFileN ), nil, nil,
> > > SW_SHOWNORMAL);
> > >
> > > Desde já agradeço
> > >
> > > Mariana
> >
> >
> >
> >
> >
> >
> >
> > -- 
> > <<<<< 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
> >
> > 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 Termos do Serviço do
> > Yahoo!.
> 
> 
> -- 
> MSN: [EMAIL PROTECTED]
> 
> 
> -- 
> <<<<< 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:
> 
> 
> 
>  
> Yahoo! Grupos, um serviço oferecido por:
> 
> 
> 
>  
> ________________________________
> 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 Termos do Serviço do
> Yahoo!. 


-- 
MSN: [EMAIL PROTECTED]


-- 
<<<<< 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