我想要实现的目标:我正在尝试通过电子邮件将 pdf 文档发送到我的 Remarkable 2 平板电脑。
我正在尝试如何做到这一点:
我设置了
rmfakecloud
:一个在您的服务器上运行并模拟官方 Remarkable 云系统的软件,因此您可以控制您的数据我设置了
rmapi
:一个允许rmfakecloud
通过命令行与官方 Remarkable 2 云交互的软件我在 Gmail 上设置了一个电子邮件帐户[电子邮件受保护]启用安全性较低的应用程序登录(即:允许在没有第二个身份验证因素的情况下登录)
我编写了(我必须承认,在 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
服务运行