[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