[firebase-br] RES: Envio de Email

Andrei Luís compuvale.software em gmail.com
Sex Jul 21 13:55:53 -03 2017


Marcelo, veja se a função abaixo te ajuda, se não me engano está rodando em
máquinas com Win 10:


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;

[]s
Andrei

Em 21 de julho de 2017 13:47, Marcelo Carvalho <marcelo.nc em gmail.com>
escreveu:

> Muito Obrigado Angelo,
>
> Sem querem abusar, mas já abusando ..........  tem como colocar anexos
> neste email ?????
>
> Vou explicar qual meu problema....
>
> Hoje eu tenho uma aplicação que envia email com anexos e tudo mais, só que
> o cliente envia este email para vários grupos de emails do Outlook e ele
> não quer ficar entrando no Outlook informando o grupo e copiando todos os
> destinatários para minha aplicação.
> Ok, mas daí vc vai dizer ..... É só criar um catálogo de endereços na sua
> aplicação!
> Também pensei nisso, mas eles fazem atualização dos emails quase toda
> semana, ficaria complicado dizer que eles vãoter que fazer isso em dois
> sistemas.
>
> Obrigado.
>
>
> Em 21 de julho de 2017 12:28, Angelo Ricardo Miquelin Neto <
> angelo em softmiq.com.br> escreveu:
>
> > Não sei se é exatamente isso que vc quer mas ...
> >
> > Uso essa rotina abaixo e funciona.
> >
> > Ela irá abrir o cliente de e-mail padrão com a tela pronta para envio.
> >
> > Ai é só usuário dar o comando de enviar.
> >
> > Testei no Outlook 2007, 2010, 2013 e 2016, Windows Mail e Thunderbird, no
> > Windows 7, 8.1 e 10.
> >
> > Funcionou em todos.
> >
> > Uses ShellApi;
> >
> > var szmail : array[0..MAX_PATH] of char;
> > begin
> >  StrPcopy(szmail,'mailto:seuemail em seudominio.com.br'+'?' +
> >                  'Subject=Ref : Mensagem do seu sistema' + '&' +
> >                  'Body=Digite aqui sua dúvida, crítica, erro encontrado
> ou
> > tópico de interesse sobre o Meu Sistema:'+#13#10#10#10);
> >
> >  ShellExecute(Handle,
> >               'open',
> >                szmail,
> >                nil,
> >               nil, SW_SHOW);
> >
> > end;
> >
> >
> > Angelo.
> > ===============================================================
> >  []___
> >  /    /\____    Angelo Ricardo Miquelin Neto
> > /_/\_//____/\   Analista de Sistemas - SoftMiq Informática
> > | || |||  |||   (42) 3028-5500   (42) 9972-6575
> > | || |||__|||   Ponta Grossa - Paraná - Brasil
> > ===============================================================
> >
> > -----Mensagem original-----
> > De: lista [mailto:lista-bounces em firebase.com.br] Em nome de Marcelo
> > Carvalho
> > Enviada em: sexta-feira, 21 de julho de 2017 11:28
> > Para: FireBase
> > Assunto: [firebase-br] Envio de Email
> >
> > Bom Dia Pessoal,
> >
> > Sei que aqui não é o local mais correto, mas alguém daqui envia email,
> por
> > um projeto Delphi, utilizando o Outlook ? Quero abrir a tela de envio de
> > email do Outlook e passar os parâmetros, deixando somente os contatos
> para
> > que a pessoa escolha de seu cadastro no Outlook.
> >
> > --
> > Atenciosamente,
> >
> > *Marcelo Carvalho*
> > MSN *carvalho826 em hotmail.com <carvalho826 em hotmail.com>*
> > ______________________________________________
> > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br Para
> > saber como gerenciar/excluir seu cadastro na lista, use:
> > http://www.firebase.com.br/fb/artigo.php?id=1107
> > Para consultar mensagens antigas:
> > http://www.firebase.com.br/pesquisa_lista.html
> >
> >
> > ______________________________________________
> > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > Para saber como gerenciar/excluir seu cadastro na lista, use:
> > http://www.firebase.com.br/fb/artigo.php?id=1107
> > Para consultar mensagens antigas: http://www.firebase.com.br/
> > pesquisa_lista.html
> >
>
>
>
> --
> Atenciosamente,
>
> *Marcelo Carvalho*
> Fone (051) *8128.5285*
> MSN *carvalho826 em hotmail.com <carvalho826 em hotmail.com>*
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://www.firebase.com.br/
> pesquisa_lista.html
>



Mais detalhes sobre a lista de discussão lista