enviar email via outlook

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

Avatar do usuário
Amparo
Usuário Nível 3
Usuário Nível 3
Mensagens: 342
Registrado em: 20 Ago 2010 10:38
Localização: caieiras / sao paulo

enviar email via outlook

Mensagem por Amparo »

Feliz 2014

um grande abraço a todos os colegas, em especial para toledo, hasse, sygecom, asimoes, rochinha, pablo, billy1943, hasa e alxsts

Toledo, estava eu dando uma fuçada para ver se achava algo sobre o Outlook, quando vi um exemplo seu cfe abaixo, fiz algumas mudanças para adaptar ao meu sistema e tudo mais, foi quando tentei colocar uma linha para anexar um arquivo e não obtive sucesso, pesquisei procurei e não cheguei a nenhuma solução, sera que os colegas poderiam me emprestar (RSRSR) uma luz para o fim deste túnel?

exemplo do Toledo:

Código: Selecionar todos

 ITEM 'Enviar' ACTION ShellExecute( 0, "open", "rundll32.exe", ;
               "url.dll,FileProtocolHandler " + ;
               "mailto:"+cEmailDest+"?cc=&bcc=" + ;
               "&subject="+cAssunto + ;
               "&body="+cMensagem, , 1 )

Código: Selecionar todos

eu mudei desta forma e não funcionou, abre o Outlook só não vem o anexo

      ITEM 'Enviar' ACTION ShellExecute( 0, "open", "rundll32.exe", ;
               "url.dll,FileProtocolHandler " + ;
               "mailto:"+cEmailDest+"?cc=&bcc=" + ;
               "&subject="+cAssunto + ;
	       "&attach=c:\teste.txt" + ;
               "&body="+cMensagem, , 1 )
abraço a todos
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

enviar email via outlook

Mensagem por Toledo »

Amparo, este exemplo era para executar com o Outlook Express, utilizando o comando mailto: que permite preencher alguns campos da mensagem que será enviada. Mas infelizmente estes campos pré-formatados é limitado, permitindo apenas o preenchimento dos seguintes campos:
  • Para
  • Cc
  • Bcc
  • Assunto
  • Corpo da mensagem
Utilizando o comando mailto: não é possível enviar arquivos em anexo.

Acho que com o Outlook (não o Outlook Express, é a versão que vem com o Office) tem como anexar arquivos criando o objeto OLE (Outlook.Application).

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
rbonotto
Usuário Nível 3
Usuário Nível 3
Mensagens: 253
Registrado em: 06 Mai 2005 18:52

enviar email via outlook

Mensagem por rbonotto »

Estou tentando usar o código acima mas o harbour não reconheçe o comando ShellExecute, usando o windows XP

Código: Selecionar todos

# INCLUDE 'inkey.ch'

cEmailDest := 'xxxxxxxxxxxxxx@xxx.xxx.xx'
cAssunto   := 'relatorio'
cMensagem  := 'teste'

     ShellExecute( 0, "open", "rundll32.exe", ;
     "url.dll,FileProtocolHandler " + ;
     "mailto:"+cEmailDest+"?cc=&bcc=" + ;
     "&subject="+cAssunto + ;
     "&body="+cMensagem, , 1 )
A mensagem de erro de compilação:

hbmk2: Linking... programa.exe
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
Error: Unresolved external '_HB_FUN_SHELLEXECUTE' referenced from C:\......
mixsistemas@gmail.com
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

enviar email via outlook

Mensagem por alxsts »

Olá!

Como você está compilando?

ShelExecute() pertence à HbWin:

Código: Selecionar todos

HbMk2 Programa -lHbWin
[]´s
Alexandre Santos (AlxSts)
rbonotto
Usuário Nível 3
Usuário Nível 3
Mensagens: 253
Registrado em: 06 Mai 2005 18:52

enviar email via outlook

Mensagem por rbonotto »

Ola,

c:\minigui\harbour\bin\hbmk2 sistema.hb

Conteudo do arquivo sistema.hb

Código: Selecionar todos

-oprograma
-lhbct
-lxhb
-lhbwin
-llibpng
-gtwvt
-incpath=c:\minigui\harbour\include
-Lc:\minigui\harbour\lib
-inc
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

enviar email via outlook

Mensagem por Toledo »

Amigos, esta função ShellExecute() é da LIB MiniGui, então se o programa está sendo compilado em modo console, não vai dar certo.

Código da função que está na MiniGui:

Código: Selecionar todos

HB_FUNC( SHELLEXECUTE )
{
   hb_retnl
   (
      ( LONG ) ShellExecute
      (
         ( HWND ) hb_parnl( 1 ),
         HB_ISNIL( 2 ) ? NULL : ( LPCTSTR ) hb_parc( 2 ),
         ( LPCSTR ) hb_parc( 3 ),
         HB_ISNIL( 4 ) ? NULL : ( LPCTSTR ) hb_parc( 4 ),
         HB_ISNIL( 5 ) ? NULL : ( LPCTSTR ) hb_parc( 5 ),
         hb_parni( 6 )
      )
   );
}
Acho que no Harbour tem a função wapi_ShellExecute().

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

enviar email via outlook

Mensagem por alxsts »

Olá!

Exatamente Toledo: wapi_ShellExecute()

Código: Selecionar todos

HB_FUNC( WAPI_SHELLEXECUTE )
{
#if defined( HB_OS_WIN_CE )
   hb_retni( -1 );
#else
   void * hOperation;
   void * hFile;
   void * hParameters;
   void * hDirectory;

   hb_retnint( ( HB_PTRDIFF ) ShellExecute( ( HWND ) hb_parptr( 1 ),
                                            HB_PARSTR( 2, &hOperation, NULL ), /* edit, explore, open, print, play?, properties? */
                                            HB_PARSTRDEF( 3, &hFile, NULL ),
                                            HB_PARSTR( 4, &hParameters, NULL ),
                                            HB_PARSTR( 5, &hDirectory, NULL ),
                                            hb_parnidef( 6, SW_SHOWNORMAL ) /* nShowCmd */ ) );

   hb_strfree( hOperation  );
   hb_strfree( hFile       );
   hb_strfree( hParameters );
   hb_strfree( hDirectory  );
#endif
}
Parâmetros:

Código: Selecionar todos

// FIRST PARAMETER
// "edit"    Launches an editor and opens the document for editing. If lpFile is not a document file, the function will fail. 
// "explore"    Explores a folder specified by lpFile. 
// "find"    Initiates a search beginning in the directory specified by lpDirectory. 
// "open"    Opens the item specified by the lpFile parameter. The item can be a file or folder. 
// "print"    Prints the file specified by lpFile. If lpFile is not a document file, the function fails. 
// 
// SECOND PARAMETER: 
// file or folder name
Linkar a HbWin

Fonte
[]´s
Alexandre Santos (AlxSts)
rbonotto
Usuário Nível 3
Usuário Nível 3
Mensagens: 253
Registrado em: 06 Mai 2005 18:52

enviar email via outlook

Mensagem por rbonotto »

Entendido, e ja funcionando !!

Obrigado :D
mixsistemas@gmail.com
rbonotto
Usuário Nível 3
Usuário Nível 3
Mensagens: 253
Registrado em: 06 Mai 2005 18:52

enviar email via outlook

Mensagem por rbonotto »

Pessoal, só um problema que esta acontecendo com o código.

Ele não esta colocando o arquivo em anexo, segue o codigo:

Código: Selecionar todos

cEmailDest := 'xxx@xxx.com.br'
cAssunto   := 'Relatorio'
cMensagem  := 'Rlatorio XXXX'

     WAPI_SHELLEXECUTE( 0, "open", "rundll32.exe", ;
     "url.dll,FileProtocolHandler " + ;
     "mailto:"+cEmailDest+"?cc=&bcc=" + ;
     "&attach=c:\teste.txt" + ;
     "&subject="+cAssunto + ;
     "&body="+cMensagem, , 1 )
Abre ok o outlook:
Imagem

Mas nada do arquivo anexado. Alguma idéia ?

Abraços,
mixsistemas@gmail.com
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

enviar email via outlook

Mensagem por Toledo »

Amigo, veja as duas primeiras mensagens deste tópico.

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
rbonotto
Usuário Nível 3
Usuário Nível 3
Mensagens: 253
Registrado em: 06 Mai 2005 18:52

enviar email via outlook

Mensagem por rbonotto »

Putz....que mancada a minha.... :-o

Desculpe nossa falha rsrsrsrsrsrs

Abraços,
mixsistemas@gmail.com
buenaonda
Usuário Nível 1
Usuário Nível 1
Mensagens: 1
Registrado em: 17 Jan 2017 15:43
Localização: Brasilia

enviar email via outlook

Mensagem por buenaonda »

:-o Alguém poderia encontrar a solução para este? Eu encontrei esta informação. FiveWin vem com classe TSMTP peeeero, como não é de surpreender em FiveWin, a classe é incompleta e não suporta a autenticação ou suporta e-mail com anexos, então descartar a classe nativa de FiveWin.

Existem várias opções possíveis:

1) usando BLAT é um programa externo que é facilmente configurado através de um arquivo de texto, é gratuito e funciona muito bem ambos os 16 e 32 bits. Em seu site (blat.net) você vai encontrar exemplo detalhado, um simples WinExec BLAT <file> faz o que você precisa.

2) A xHarbour de 32 bits, você pode usar o objeto nativo que está incluído para o envio de e-mail, eu vou lhe dar um exemplo aqui, mas eu recomendo que você verifique o xHarbour documentação on-line (xharbour.com/xhdn / referenceguide /) para obter mais informações sobre a autenticação.
Responder