Automatizar um envio de relatorio via email [EDITADO]

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

glopes2011
Usuário Nível 1
Usuário Nível 1
Mensagens: 11
Registrado em: 08 Jun 2011 20:42
Localização: sao leopoldo/rs

Automatizar um envio de relatorio via email [EDITADO]

Mensagem por glopes2011 »

Tenho a seguinte necessidade :
Automatizar um envio de relatorio via email.
Gerar um arquivo relatorio com a opcao de saida em (PDF, PRN, TXT)

Apos geração, abrir automaticamente a visualização deste.

Ao fechar a visualização chamar o OUTLOOK e anexar este arquivo nele.

E automaticamente colocar o destinatario de email ( que viria do meu
cadastro de cliente ) e tambem o CCO (com copia omitida)

O corpo do email será preenchido automaticamente com um arquivo TXT gerado pelo meu
sistema.

Aí (depois de tantos automaticamente), clicar enviar (manualmente, rsrsrs)
----------------------------//------------------------------------------------------
Estou iniciando no Xharbour e gostaria que me indicassem o que posso
usar para impressão em Windows, sem ter que modificar muito os programas
SIBRA ( site desativado, não sei onde encontrar), PageScript ou outros.
OU recursos do proprio xharbour ( que desconheço)
Gostaria desta informação e onde buscar para download.

No aguardo, galera.


Nota de Moderação:
por Maligno: O título do tópico foi editado, a fim de refletir seu objetivo. Por favor, futuramente, atente para o ítem 8 da Regra Geral do Fórum. Com um título claro e objetivo ajudamos a melhor organizar o fórum.
sambomb
Usuário Nível 3
Usuário Nível 3
Mensagens: 250
Registrado em: 24 Out 2008 17:02
Localização: Itaocara - RJ - Brasil

A Todos os FERAS no Xharbour

Mensagem por sambomb »

Não acredito que será possível fazer tudo o que você quer, do jeito que você quer...

Acho uma ferramenta muito interessante para relatórios o Fast Report, que te da oportunidade de Gerar o relatório em PDF e enviar por email.

Obs.: Não usei ele para envio do email, MAS, acredito que ele permita configura CCO e texto do email, fora isso ele faz de certeza.
Imagem

Rca Sistemas - Itaocara - RJ
glopes2011
Usuário Nível 1
Usuário Nível 1
Mensagens: 11
Registrado em: 08 Jun 2011 20:42
Localização: sao leopoldo/rs

A Todos os FERAS no Xharbour

Mensagem por glopes2011 »

Existe o software pago PrintFill ( www.printfill.com) e tambem o FileInEmail do mesmo fabricante.
Baixei a versão demo li o manual ( tambem em portugues ) , mas achei um pouco complicado, mas faz o que quero segundo seu
manual.
O que estava procurando era se alguem já tivesse rotinas já prontas que faziam isto.
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

A Todos os FERAS no Xharbour

Mensagem por sygecom »

Mas Bah tchê,
Segue abaixo a rotina, e faça suas adaptações.

Código: Selecionar todos

FUNCTION EMAIL_OUTLOOK
LOCAL aFiles:={'C:\ANEXO1.JPG','C:\ANEXO2.DOC'}
      oOutLook := CREATEOBJECT("Outlook.Application")
      oMailItem := oOutLook:Invoke("CreateItem", 0)

      oRecip := oMailItem:Invoke("Recipients")
      oRecip:Invoke("Add", 'email_destino@servidor.com.br' )
      oMailItem:Set("Subject", 'Asunto da mensagem' )
      oMailItem:Set("Body", 'corpo da mensagem, pode colocar aqui o conteúdo do seu TXT' )
      oAttach := oMailItem:Invoke("Attachments")
      FOR x=1 to len(aFiles)
          oAttach:Invoke("Add", aFiles[x] ) // aqui os anexos
      NEXT
      oMailItem:Invoke("Send") //ENVIA O E-MAIL
      oOutlook:Quit()
RETURN
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
glopes2011
Usuário Nível 1
Usuário Nível 1
Mensagens: 11
Registrado em: 08 Jun 2011 20:42
Localização: sao leopoldo/rs

A Todos os FERAS no Xharbour

Mensagem por glopes2011 »

O Fera funcionou direitinho..... :))
Mas é possível colocar o conteudo do arquivo TXT gerado, ao invés de colocar uma constante no BODY.
Exemplificando...
Estou gerando um Orçamento de Vendas eu gravo um TXT e nele coloco
Prezado cliente segue em anexo seu orçamento solicitado, bla, bla, bla, bla.....
Ai no BODY eu incluo o Conteudo do arquivo gerado, e não uma constante.
Se não for, consigo trabalhar com variáveis ali.

No aguardo.....
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Automatizar um envio de relatorio via email [EDITADO]

Mensagem por sygecom »

Tente na linha do Body usar assim:

Código: Selecionar todos

oMailItem:Set("Body", MEMOREAD('C:\NOME_ARQUIVO.TXT'))
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
HASA
Colaborador
Colaborador
Mensagens: 1088
Registrado em: 01 Set 2003 19:50
Localização: São Paulo
Contato:

Automatizar um envio de relatorio via email [EDITADO]

Mensagem por HASA »

:-O
Boa tarde, essa rotina não serve para OUTLOOK EXPRESS né ?
Hasa
:(Neg
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Automatizar um envio de relatorio via email [EDITADO]

Mensagem por sygecom »

Olá Hasa,

Express não....

Mas tente assim(o Outlook Espress tem que está como programa padrão de e-mail no Windows):

Código: Selecionar todos

myrun("start mailto:destino@servidor.com.br?subject=assunto do e-mail&attach=file:c:\anexo.txt&body=texto do corpo da mensagem",0)
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Automatizar um envio de relatorio via email [EDITADO]

Mensagem por asimoes »

Com thunderbird, tem que ter o thunderbird instalado.
Compose new mail with command line

You have to use the command line "-compose" to launch Thunderbird and open a new compose window. The following arguments are available:

"to" : used to specify the email of the recipient
"cc" : used to specify the email of the recipient of a copy of the mail
"bcc" : used to specify the email of the recipient of a blind copy of the mail*
"newsgroups" : one or more news groups to submit the message to*
"subject" : subject of the mail
"format" : compose the message in HTML ("format=1") or plain text ("format=2")*
"preselectid" : an identifier for the "From" identity to choose from the menu*
note that you cannot directly specify an e-mail address but need to find the identity key
for example, "preselectid=id2" would select the identity #2
you can find the key by try-and-error or by searching for useremail in the Config Editor
"body" : body of the mail
"attachment' : specify the directory and the name of an attachment
the value should be a file:// url, properly encoded
with tb3+, you can alternatively use the absolute file name (unencoded)

*(in Thunderbird 3.1.9 and earlier, these options must be preceded by at least one other option and cannot be at the start of the argument list due to bug 627999.)

Watch out for the somewhat complex syntax of the "-compose" command-line option. The double-quotes enclose the full comma-separated list of arguments passed to "-compose", whereas single quotes are used to group items for the same argument. Example:

thunderbird -compose "to='john@example.com,kathy@example.com',cc='britney@example.com',subject='dinner',body='How about dinner tonight?',attachment='C:\temp\info.doc,C:\temp\food.doc'"

(use attachment="file:///C:/temp/food.doc" for Thunderbird 2.0)

For mailto: urls the "in-reply-to" header is also supported

"in-reply-to" : adds In-Reply-To with the provided reference, adds it to References
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
glopes2011
Usuário Nível 1
Usuário Nível 1
Mensagens: 11
Registrado em: 08 Jun 2011 20:42
Localização: sao leopoldo/rs

Automatizar um envio de relatorio via email [EDITADO]

Mensagem por glopes2011 »

Com o MEMOREAD não funcionou, mas com variaveis funcionou.
Criei variavel1 e variavel2 e a minha linha ficou assim :
"BODY", VARIAVEL1 + CHR(13) + VARIAVEL2 ( O CHR 13 É PARA MUDAR DE LINHA )
Então agora dar para ler o arquivo antes e passar variaveis para a função.

Eu preciso saber como carregar o OUTLOOK antes, se ele ainda não tiver sido aberto.
Desde já agradecido....
Avatar do usuário
HASA
Colaborador
Colaborador
Mensagens: 1088
Registrado em: 01 Set 2003 19:50
Localização: São Paulo
Contato:

Automatizar um envio de relatorio via email [EDITADO]

Mensagem por HASA »

Boa Tarde sygecom

Não fiz aquele teste com o Outlook Express, mas estou tentando utilizar a função de envio de email que você postou (EMAIL_OUTLOOK), mas ao tentar enviar da o seguinte erro:

"Error BASE/1004 Class: 'NUMERIC' has no exported method: INVOKE"

A linha que acusa o erro é:

"oRecip:Invoke("Add", 'email_destino@servidor.com.br' )"

Em meu fonte, alterei o email para uma variável contendo o email do cliente

O que posso estar fazendo de errado?
glopes2011
Usuário Nível 1
Usuário Nível 1
Mensagens: 11
Registrado em: 08 Jun 2011 20:42
Localização: sao leopoldo/rs

Automatizar um envio de relatorio via email [EDITADO]

Mensagem por glopes2011 »

Seria bom colocar todo as linhas do sua rotina, para podermos ver.
Eu copiei e colei a rotina postada e funcionou sem erros.
abaixo segue minha rotina....

Código: Selecionar todos

fUNCTION MAIL_OUTLOOK ()
LOCAL aFiles:={'C:\WPERS\PRG\BONE.JPG','C:\WPERS\PRG\ANEXO2.DOC'}
VARIAVI1:="ABCDEFGJIJKLMNOPQRSTUVXZ" 
VARIAVI2:="123456789012345678901234"
vemail1:="testeemail@gmail.com"
vemail2:="comercial@gmail.com"
oOutLook := CREATEOBJECT("Outlook.Application")
oMailItem := oOutLook:Invoke("CreateItem", 0)
oRecip := oMailItem:Invoke("Recipients")
oRecip:Invoke("Add", vemail1  )
oRecip:Invoke("Add", vemail2  )
* com 2 add crio dois remetentes
oMailItem:Set("Subject", 'Teste Programa Xharbour' )
oMailItem:Set("Body", VARIAVI1 + CHR(13) + VARIAVI2  )
*oMailItem:Set("CC", 'com copia para'  )
oAttach := oMailItem:Invoke("Attachments")
FOR x=1 to len(aFiles)
oAttach:Invoke("Add", aFiles[x] ) // aqui os anexos
NEXT
oMailItem:Invoke("Send") //ENVIA O E-MAIL
*oOutlook:Quit() // SE QUIZER ENCERRAR TIRAR ASTERISCO 
RETURN
Editado pela última vez por Maligno em 13 Jul 2011 20:09, em um total de 1 vez.
Razão: Mensagem editada para colocar a tag [ code ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r1
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Automatizar um envio de relatorio via email [EDITADO]

Mensagem por sygecom »

Olá Hasa,

O Microsoft Outlook está instalado na maquina ? é o que vem junto com o pacote do Office.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
HASA
Colaborador
Colaborador
Mensagens: 1088
Registrado em: 01 Set 2003 19:50
Localização: São Paulo
Contato:

Automatizar um envio de relatorio via email [EDITADO]

Mensagem por HASA »

Olá glopes2011
A minha função está exatamente igual a sua (só que apenas com 1 destinatário como no exemplo), carregando os dados de variáveis, não muda nada, mas o erro continua

Olá sygecom
O Outlook é do pacote do Office 2007, está instalado corretamente, tanto que por uma outra função eu consigo, mas só consigo colocar 1 anexo, mas preciso de 2 anexos, por isso estou tentando usar a sua função

Desde já agradeço a atenção de vcs
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Automatizar um envio de relatorio via email [EDITADO]

Mensagem por sygecom »

Estranho meu amigo, aqui uso a mesma versão. Infelizmente não sei lhe ajudar, não faço ideia o que pode está acontecendo.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Responder