Passo 1

Passo 1

Gostaria de filtrar meus e-mails recebidos no Thunderbird de forma que o anexo (fatura como arquivo pdf) seja impresso automaticamente sem confirmação adicional ou pop-ups.

O corpo do email não deve ser impresso, apenas o arquivo pdf anexado.

Existe alguma maneira de conseguir a impressão automática dos arquivos anexados?

Eu tentei usarFiltroQuilla, mas com isso só consigo imprimir o email em si, não o anexo.

Existe umpergunta relacionadaaqui no superusuário, porém, aquele solicita a impressão em massa/lote de todos os anexos de mensagens selecionadas manualmente (e não tem respostas). Quero imprimir especificamente o anexo de todos os e-mails recebidos de um endereço de e-mail do remetente.

Embora fosse bom ter uma solução baseada no Thunderbird, isso não é um requisito. Seria totalmente normal usar alguns filtros no Thunderbird e encaminhar e-mails para outro endereço de e-mail, que será então acessado por outro produto.

A propósito, eu preferiria uma solução gratuita/de código aberto.

Responder1

Aqui está a minha solução para o problema, combinando alguns aspectos das outras respostas e superando as limitações delas.

Vantagens desta solução:

  • Solução de código aberto, portanto também disponível para ambientes comerciais
  • Realmenteimpressão invisível e silenciosa. Nenhuma janela está aparecendo

A abordagem combina várias etapas:

  1. Filtragem de emails e extração de anexos comFiltaquilhaem Thunderbird
  2. Ascript pythonpara imprimir os arquivos atravésFoxitReader. Outras ferramentas, como AdobeReader ou Ghostscript, não são capazes de imprimir silenciosamente - uma janela fica visível para o AdobeReader por um bom tempo e mesmo para o Ghostscript, uma janela aparece.
  3. Atarefa agendadapara executar o script python regularmente.

Passo 1

Todos os e-mails são filtrados no Thunderbird comFiltaquilha(disponível para Thunderbird 52.0-60.* a partir de 2019). A filtragem por remetente e assunto do e-mail fornece "segurança" suficiente por enquanto. Os e-mails são movidos para uma subpasta IMAP (como um arquivo para inspeção posterior se algo der errado). Filtaquilla extrai todos os anexos para uma pasta especificada ( C:\invoices). A extração de anexos não está habilitada por padrão no Filtaquilla - certifique-se de verificar as configurações do Filtaquilla.

Passo 2

Coloque o seguinteimprimir.pywem C:\invoices:

import os
import subprocess
import sys
import glob
import time

foxit = "C:\Program Files (x86)\Foxit Software\Foxit Reader\FoxitReader.exe"
script_dir = os.path.dirname(os.path.realpath(__file__))

# get all pdf files
pdf_files = glob.glob(script_dir + "/*.pdf")

# print each pdf and delete it
for pdf_file in pdf_files:
    command = []
    command.append(foxit)
    command.append("/p")
    command.append("/h")
    command.append(pdf_file)
    proc = subprocess.Popen(command, stdout=subprocess.PIPE)
    time.sleep(10) 
    os.remove(pdf_file)

etapa 3

Em princípio, o arquivo print.pyw pode ser executado com Filtaquilla. No entanto, isso pode resultar na impressão múltipla de arquivos PDF extraídos se o filtro encontrar mais de um e-mail.

Para superar isso, uma tarefa agendada (ação: executar programa) é útil, executada a cada 10 minutos ou mais.

  • programa/roteiro:"C:\Program Files (x86)\Python36-32\pythonw.exe"
  • argumentos:"C:\invoices\print.pyw"
  • correr em:C:\invoices\

Observe as aspas que faltam nocorrer em campo, caso contrário o script não será executado. Também é importante que o script e os arquivos extraídos sejamnão localizado em uma unidade de rede!

Responder2

  1. Crie a pasta 'AttachmentsToPrint', em FilterQuilla verifique Save Attachments Toe especifique essa pasta
  2. Crie um arquivo em lote/script que aguarde 60 segundos (para dar tempo ao FilterQuilla para extrair o anexo antes de fazermos algo com ele), imprima o arquivo e exclua o arquivo
  3. No FilterQuilla, verifique Run Programe especifique esse arquivo em lote/script
  4. Cruze seus dedos

Certamente existe software comercial para isso, então a solicitação é MUITO possível e fácil se adquirida. É provável que o código aberto seja possível, mas ainda mais complicado do que o acima. Aqui estão alguns links para você começar: https://blog.thomashampel.com/blog/tomcat2000.nsf/dx/print-email-attachments-with-a-raspberrypi.htm https://ubuntuforums.org/showthread.php?t=935489

O problema que me preocupa é sem um cliente de e-mail, como você filtra spam/lixo para não imprimir isso, também um pouco preocupante extrair anexos pode causar uma infecção, mas talvez eu esteja apenas sendo paranóico

Responder3

Você pode usar uma solução de duas etapas se o servidor de e-mail usar IMAP:

  1. Baixe anexos de novos e-mails para uma pasta
  2. Monitore a pasta em busca de novidades e imprima-as

Para a primeira etapa, você pode usar um produto gratuito como Edição gratuita do downloader de anexos de e-mail, descrito como:

O Mail Attachment Downloader baixa e processa com segurança todos os seus anexos de e-mail de uma só vez, com base na sua preferência de pesquisa. Deixe todos os seus e-mails em seu servidor - isso não interfere em nenhum outro programa de e-mail que você usa hoje para baixar seus e-mails. Você pode configurar vários filtros, como tamanho, tipo de arquivo, de quem é, assunto do e-mail, carimbo de data e hora, para especificar o que deseja baixar.

Para a segunda etapa, e depois que os arquivos anexados forem armazenados na pasta especificada, você poderá imprimir todos eles usando esta linha do PowerShell:

Get-ChildItem -Path 'C:\Temp\tmp2' -File | ForEach-Object { Start-Process -FilePath $_.Fullname -Verb Print -PassThru | %{sleep 10}}

O acima requer um produto PDF instalado que suporte o verbo Imprimir, por exemplo, o free Leitor Foxit, onde não é necessário ambiente gráfico (login).

Este script do PowerShell pode ser armazenado em um .ps1arquivo e agendado para execução periódica no Agendador de Tarefas.

Se você estiver usando o Adobe Reader, a versão mais recente poderá permanecer aberta após a impressão. Isso pode ser resolvido modificando o script para:

Get-ChildItem -Path 'C:\Temp\tmp2' -File | ForEach-Object { Start-Process -FilePath $_.Fullname -Verb Print -PassThru | %{sleep 10;$_} | kill}

Responder4

Você pode usar um script python (bem pequeno) como o mostrado abaixo, que se conectará e receberá a primeira mensagem do remetente especificado e imprimirá a mensagem na saída padrão. Então, com munpack(pacote mpackno Debian) você pode obter o anexo e processá-lo.

A análise da mensagem também pode ser feitaem python, o que significa que você não precisa mpacke sua solução seria portátil para mais ambientes.

Verificarimaplibpara obter mais opções, como remover a mensagem quando terminar ou fazer outro tipo de pesquisa.

import getpass, imaplib

M = imaplib.IMAP4("yourserver")
M.login("user","password")
M.select("INBOX")
typ, data = M.search(None, 'from','your_sender')

num = data[0].split()[0]
typ, data = M.fetch(num, '(RFC822)')
print 'Message %s\n%s\n' % (num, data[0][1])

M.close()
M.logout()

informação relacionada