在 bash 中从 Debian 上的电子邮件中批量提取 pdf

在 bash 中从 Debian 上的电子邮件中批量提取 pdf

我想要实现的目标:我正在尝试通过电子邮件将 pdf 文档发送到我的 Remarkable 2 平板电脑。

我正在尝试如何做到这一点:

  1. 我设置了rmfakecloud:一个在您的服务器上运行并模拟官方 Remarkable 云系统的软件,因此您可以控制您的数据

  2. 我设置了rmapi:一个允许rmfakecloud通过命令行与官方 Remarkable 2 云交互的软件

  3. 我在 Gmail 上设置了一个电子邮件帐户[电子邮件受保护]启用安全性较低的应用程序登录(即:允许在没有第二个身份验证因素的情况下登录)

  4. 我编写了(我必须承认,在 ChatGPT 的帮助下)一个简短的 bash 脚本:

    • 从所述帐户下载所有电子邮件
    • 检查发件人是否与我的电子邮件帐户匹配([电子邮件受保护]
    • 从电子邮件中提取文件(如果是 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服务运行

相关内容