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