1 단계

1 단계

추가 확인이나 팝업 없이 첨부 파일(pdf 파일 송장)이 자동으로 인쇄되도록 Thunderbird에서 수신 이메일을 필터링하고 싶습니다.

이메일 본문은 인쇄하지 말고, 첨부된 pdf 파일만 인쇄하세요.

첨부파일을 자동으로 인쇄할 수 있는 방법이 있나요?

나는 사용해 보았다.필터퀼라, 하지만 이를 사용하면 첨부 파일이 아닌 이메일 자체만 인쇄할 수 있습니다.

이있다관련 질문그러나 여기 수퍼유저에서는 수동으로 선택한 메시지의 모든 첨부 파일을 대량/일괄 인쇄하도록 요청합니다(답변이 없음). 하나의 보낸 사람 이메일 주소에서 들어오는 모든 이메일의 첨부 파일을 구체적으로 인쇄하고 싶습니다.

Thunderbird 기반 솔루션이 있으면 좋겠지만 이것이 필수 사항은 아닙니다. Thunderbird에서 일부 필터를 사용하고 이메일을 다른 이메일 주소로 전달한 다음 다른 제품에서 액세스하는 것은 완전히 괜찮습니다.

그건 그렇고, 나는 무료/오픈 소스 솔루션을 선호합니다.

답변1

다음은 다른 답변의 일부 측면을 결합하고 그 한계를 극복하는 문제에 대한 솔루션입니다.

이 솔루션의 장점:

  • 오픈 소스 솔루션이므로 상업적 배경에도 사용 가능
  • 정말보이지 않는 자동 인쇄. 아무런 창이 뜨지 않습니다

이 접근 방식은 여러 단계를 결합합니다.

  1. 이메일 필터링 및 첨부 파일 추출필타키야썬더버드에서
  2. 파이썬 스크립트파일을 인쇄하려면FoxitReader. AdobeReader 또는 Ghostscript와 같은 다른 도구는 자동 인쇄를 지원하지 않습니다. AdobeReader에서는 창이 꽤 오랫동안 표시되며 Ghostscript의 경우에도 창이 팝업됩니다.
  3. 예약된 작업Python 스크립트를 정기적으로 실행합니다.

1 단계

모든 이메일은 Thunderbird에서 필터링됩니다.필타키야(2019년 기준 Thunderbird 52.0-60.*에서 사용 가능) 이메일 발신자 및 제목 필터링은 현재로서는 충분한 "보안"을 제공합니다. 이메일은 IMAP 하위 폴더로 이동됩니다(문제가 있는 경우 나중에 검사할 수 있도록 보관함). Filtaquilla는 지정된 폴더( C:\invoices)에 모든 첨부 파일을 추출합니다. Filtaquilla에서는 기본적으로 첨부 파일 추출이 활성화되어 있지 않습니다. Filtaquilla의 설정을 확인하십시오.

2 단계

다음을 배치print.pyw안에 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)

3단계

원칙적으로 print.pyw 파일은 Filtaquilla로 실행할 수 있습니다. 그러나 필터가 두 개 이상의 이메일을 발견하면 추출된 PDF 파일이 여러 번 인쇄될 수 있습니다.

이를 극복하려면 약 10분마다 실행되는 예약된 작업(작업: 프로그램 실행)이 도움이 됩니다.

  • 프로그램/스크립트:"C:\Program Files (x86)\Python36-32\pythonw.exe"
  • 인수:"C:\invoices\print.pyw"
  • 실행:C:\invoices\

누락된 따옴표를 참고하세요.뛰어들다 필드가 아니면 스크립트가 실행되지 않습니다. 또한 중요한 것은 스크립트와 추출된 파일이네트워크 드라이브에 위치하지 않음!

답변2

  1. FilterQuilla에서 'AttachmentsToPrint' 폴더를 생성하고 Save Attachments To해당 폴더를 확인하고 지정하세요.
  2. 60초를 기다리는 배치/스크립트 파일을 만들고(FilterQuilla가 첨부 파일을 사용하기 전에 첨부 파일을 추출할 시간을 주기 위해) 파일을 인쇄한 다음 파일을 삭제합니다.
  3. FilterQuilla에서 Run Program해당 배치/스크립트 파일을 확인하고 지정하십시오.
  4. 손가락을 교차시키세요

이를 위한 상용 소프트웨어가 확실히 존재하므로 구입하면 요청이 매우 가능하고 쉽습니다. 오픈 소스가 가능할 가능성이 높지만 위의 것보다 더 복잡합니다. 다음은 시작하는 데 도움이 되는 몇 가지 링크입니다. https://blog.thomashampel.com/blog/tomcat2000.nsf/dx/print-email-attachments-with-a-raspberrypi.htm https://ubuntuforums.org/showthread.php?t=935489

제가 걱정하는 문제는 메일 클라이언트가 없으면 어떻게 스팸/정크를 필터링하여 인쇄하지 않을 것인가 하는 것입니다. 또한 약간 걱정스러운 추출 첨부 파일이 감염을 일으킬 수 있지만 아마도 제가 편집증적인 것일 수도 있습니다.

답변3

이메일 서버가 IMAP을 사용하는 경우 2단계 솔루션을 사용할 수 있습니다.

  1. 새 이메일의 첨부 파일을 폴더로 다운로드
  2. 새로 도착한 폴더를 모니터링하고 인쇄하세요.

첫 번째 단계에서는 다음과 같은 무료 제품을 사용할 수 있습니다. 메일 첨부 다운로더 무료 버전, 로 서술 된:

메일 첨부 파일 다운로더는 검색 기본 설정에 따라 모든 이메일 첨부 파일을 한 번에 안전하게 다운로드하고 처리합니다. 모든 메일을 서버에 남겨두세요. 현재 메일을 다운로드하기 위해 사용하는 다른 이메일 프로그램을 방해하지 않습니다. 크기, 파일 형식, 출처, 이메일 제목, 날짜 및 타임스탬프와 같은 다양한 필터를 설정하여 다운로드할 항목을 지정할 수 있습니다.

두 번째 단계에서는 첨부 파일이 지정된 폴더에 저장되면 다음 PowerShell 한 줄을 사용하여 모든 파일을 인쇄할 수 있습니다.

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

위의 경우 Print 동사를 지원하는 PDF 제품이 설치되어 있어야 합니다(예: free). Foxit 리더, 그래픽 환경(로그인)이 필요하지 않은 경우.

이 PowerShell 스크립트는 파일에 저장될 수 .ps1있으며 작업 스케줄러에서 주기적으로 실행되도록 예약할 수 있습니다.

Adobe Reader를 사용하는 경우 인쇄 후에도 최신 버전이 열려 있을 수 있습니다. 이 문제는 스크립트를 다음과 같이 수정하여 해결할 수 있습니다.

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

답변4

아래와 같은 (아주 작은) Python 스크립트를 사용하면 지정한 발신자로부터 첫 번째 메시지를 연결하고 가져와 메시지를 표준 출력으로 인쇄할 수 있습니다. 그런 다음 munpack( mpackDebian의 패키지)를 사용하여 첨부 파일을 가져와 처리할 수 있습니다.

메시지 구문 분석도 수행할 수 있습니다.파이썬으로, 이는 필요하지 않으며 mpack솔루션을 더 많은 환경으로 이식할 수 있음을 의미합니다.

확인하다imaplib작업이 완료되면 메시지를 제거하거나 다른 유형의 검색을 수행하는 등의 추가 옵션을 확인하세요.

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()

관련 정보