bash의 데비안 이메일에서 PDF 일괄 추출

bash의 데비안 이메일에서 PDF 일괄 추출

내가 달성하고 싶은 것:Remarkable 2 태블릿으로 PDF 문서를 이메일로 보내려고 합니다.

나는 이것을하는 방법을 시도하고 있습니다 :

  1. 설정 rmfakecloud: 서버에서 실행되고 공식 Remarkable 클라우드 시스템을 에뮬레이션하여 데이터를 제어할 수 있는 소프트웨어

  2. 나는 명령줄을 통해 공식 Remarkable 2 클라우드와 상호 작용할 수 있는 소프트웨어를 설정했습니다 rmapi.rmfakecloud

  3. Gmail에서 이메일 계정을 설정했습니다[이메일 보호됨]덜 안전한 애플리케이션 로그인 활성화(예: 두 번째 인증 요소 없이 로그인 허용)

  4. 나는 짧은 bash 스크립트를 작성했습니다(ChatGPT의 도움으로 인정해야 합니다):

    • 해당 계정의 모든 이메일을 다운로드하세요.
    • 보낸 사람이 내 이메일 계정과 일치하는지 확인하세요([이메일 보호됨])
    • 이메일에서 파일 추출(PDF인 경우)<--- [이건 작동하지 않습니다]
    • 다음 명령을 사용하여 추출된 파일을 내 태블릿의 클라우드에 업로드합니다.rmapi

나의 기술적 접근 방식:

#!/bin/bash
# The parameters for offlineimap are saved in /root/.offlineimaprc

# Define the senders whose attachments you want to save
SENDERS=("[email protected]" "[email protected]")

# Define the directory where attachments will be saved
SAVE_DIR="/root/sync/sync"

# Define the command to upload PDFs to reMarkable
RMAPI_CMD="RMAPI_CONFIG=/root/.config/rmapi/rmapi.conf RMAPI_HOST=https://tablet.mydomain.com /root/go/bin/rmapi -ni put"

# Sync emails using offlineimap
offlineimap -o

# Extract PDF attachments and upload to reMarkable
for email in /root/Maildir/\[Gmail\].All\ Mail/new/*; do
  sender=$(grep -E '^From:' "$email" | sed -e 's/^From: //')
  if [[ ${SENDERS[*]} =~ $sender ]]; then
    munpack -q -t "$email" -C "$SAVE_DIR" \
      | grep -E '^Attachment' \
      | sed -e 's/^Attachment //' \
      | while read -r filename; do
        if [[ -f "$SAVE_DIR/$filename" ]]; then
          $RMAPI_CMD "$SAVE_DIR/$filename"
          if [[ -f "$SAVE_DIR/$filename" ]]; then
            rm "$SAVE_DIR/$filename"
          fi
        fi
      done
  fi
done

무엇이 잘못됐나요:

root@tabletserver:~$ ./mail.sh
OfflineIMAP 7.3.0
  Licensed under the GNU GPL v2 or any later version (with an OpenSSL exception)
imaplib2 v3.05, Python v3.9.2, OpenSSL 1.1.1n  15 Mar 2022
Account sync Gmail:
 *** Processing account Gmail
 Establishing connection to imap.gmail.com:993 (Remote)
Folder [Gmail]/All Mail [acc: Gmail]:
 Syncing [Gmail]/All Mail: Gmail -> Maildir
Folder [Gmail]/Drafts [acc: Gmail]:
 Syncing [Gmail]/Drafts: Gmail -> Maildir
Folder [Gmail]/Important [acc: Gmail]:
 Syncing [Gmail]/Important: Gmail -> Maildir
Folder [Gmail]/Sent Mail [acc: Gmail]:
 Syncing [Gmail]/Sent Mail: Gmail -> Maildir
Folder [Gmail]/Spam [acc: Gmail]:
 Syncing [Gmail]/Spam: Gmail -> Maildir
Folder [Gmail]/Starred [acc: Gmail]:
 Syncing [Gmail]/Starred: Gmail -> Maildir
Folder [Gmail]/Trash [acc: Gmail]:
 Syncing [Gmail]/Trash: Gmail -> Maildir
Folder INBOX [acc: Gmail]:
 Syncing INBOX: Gmail -> Maildir
Account sync Gmail:
 *** Finished account 'Gmail' in 0:01

내 이해에 문제가 있습니다.

내가 아는 한, 스크립트는 gmail imap 서버에서 메일을 다운로드하고 파일이 제공되면 클라우드 서버에 파일을 업로드하도록 관리합니다.

작동하지 않는 것, 이메일에서 PDF 파일을 추출하는 것입니다. 나는 정말로 무엇이 잘못되고 있는지 또는 더 쉬운 방법이 무엇인지 모릅니다.

스크립트 실행 방법:

이 스크립트를 악마화하여 systemd서비스로 실행할 계획입니다.

관련 정보