LetterFeed:将邮件通讯(Newsletter)转为RSS订阅

简介

什么是 Newsletter ?

Newsletter(新闻简报或邮件通讯)是一种定期发布的电子邮件形式的出版物,通常由组织、企业、个人或社区发送给其订阅者。内容包括最新消息、更新、活动通知、专题文章、产品促销或其他相关信息,针对特定主题或兴趣群体而设计。

Newsletter 是一种一对多的内容传递方式,主要作为企业、博主和独立作者的邮件营销工具,用于向订阅用户推送产品、折扣和品牌信息,目的在于促进销售。

什么是 LetterFeed ?

LetterFeed 是一款自托管的应用程序,可将电子邮件新闻通讯转换为 RSS 源。它定期通过 IMAP 扫描用户的电子邮件收件箱,查找已配置发件人的新邮件,并将其处理后添加为相应新闻通讯的 RSS 源条目。

主要特点

  1. 自托管:用户可以在自己的服务器上运行,确保数据的隐私和安全。
  2. IMAP 支持:通过 IMAP 连接到电子邮件账户,支持 SSL 加密。
  3. 电子邮件转 RSS: 定期检查新邮件,将来自您指定发件人的电子邮件转换为 RSS 订阅源。
  4. 灵活配置:通过环境变量配置 IMAP 设置、电子邮件处理选项等。
  5. Docker 支持:使用 DockerDocker Compose 简化安装和部署过程。

应用场景

  1. 电子邮件新闻通讯管理:用户可以轻松管理和阅读来自不同来源的新闻通讯,集中在一个 RSS 阅读器中。
  2. 统一阅读体验:在用户喜欢的 RSS 阅读器中阅读所有订阅的新闻、博客文章和新闻通讯,也便于数据分析和处理。
  3. 自动化工作流:适合需要定期获取和处理电子邮件内容的自动化场景,例如将新闻报道转化为更新通知。
  4. 个人和团队使用:无论是个人用户还是团队,都可以通过 LetterFeed 有效管理信息流。
  5. 存档和搜索: 利用 RSS 阅读器强大的存档和搜索功能来管理和查找过去的新闻通讯内容。

LetterFeed 提供一种将电子邮件新闻通讯整合到其现有阅读工作流中的方法。许多有价值的信息和深度内容通过电子邮件新闻通讯的形式分发,但对于习惯使用 RSS 的用户来说,在电子邮件客户端和 RSS 阅读器之间切换可能会降低效率,而 LetterFeed 提升了用户的阅读体验和信息获取效率。

安装

在群晖上以 Docker 方式安装。涉及前、后端两个容器,采用 docker-compose 安装

本文写作时, latest 版本对应为 v0.4.0

env.txt

IMAP、电子邮件处理和用户名/密码相关的设置可以通过环境变量或 UI 进行设置。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# The base URL of the application, e.g., http://localhost:3000 or https://letterfeed.example.com
LETTERFEED_APP_BASE_URL=http://192.168.0.197:3730
LETTERFEED_BACKEND_URL=http://backend:8000 # URL of the backend service

# The database URL. Change this if you change the volume mount point
LETTERFEED_DATABASE_URL=sqlite:////data/letterfeed.db

# IMAP server settings. Must have IMAP over SSL on port 993
LETTERFEED_IMAP_SERVER=imap.88.com
LETTERFEED_IMAP_USERNAME=wbsu2003@88.com
LETTERFEED_IMAP_PASSWORD=<第三方邮件客户端密码>

# Email processing settings
LETTERFEED_SEARCH_FOLDER=INBOX # The folder in which to search for new emails
LETTERFEED_MOVE_TO_FOLDER= # Folder to move processed emails
LETTERFEED_MARK_AS_READ=true # Mark processed emails as read
LETTERFEED_EMAIL_CHECK_INTERVAL=15 # Interval between checks for new emails
LETTERFEED_AUTO_ADD_NEW_SENDERS=false # Automatically set up new emails for unknown senders

# Authentication
# To generate a new secret key, run:
# openssl rand -hex 32
LETTERFEED_SECRET_KEY=668920921fa1f005b3d88ebe8a219d6807a1afb6e5d62c0ad8bae63805ab371c
LETTERFEED_AUTH_USERNAME=laosu
LETTERFEED_AUTH_PASSWORD=123456
环境变量 描述
LETTERFEED_APP_BASE_URL 应用的基本 URL,例如 http://localhost:3000https://letterfeed.example.com
LETTERFEED_BACKEND_URL 后端服务的 URL,例如 http://backend:8000
LETTERFEED_DATABASE_URL 数据库的 URL。若更改卷挂载点,请相应更改此值,例如 sqlite:////data/letterfeed.db
LETTERFEED_IMAP_SERVER IMAP 服务器地址,必须支持 SSL993 端口
LETTERFEED_IMAP_USERNAME IMAP 登录的用户名
LETTERFEED_IMAP_PASSWORD IMAP 登录的密码
LETTERFEED_SEARCH_FOLDER 用于搜索新邮件的文件夹,默认为 INBOX
LETTERFEED_MOVE_TO_FOLDER 处理完的邮件移动到的文件夹
LETTERFEED_MARK_AS_READ 是否将处理过的邮件标记为已读,默认值为 true
LETTERFEED_EMAIL_CHECK_INTERVAL 检查新邮件的间隔时间,单位为分钟,默认值为 15
LETTERFEED_AUTO_ADD_NEW_SENDERS 是否自动为未知发件人设置新邮件,默认值为 false
LETTERFEED_SECRET_KEY 用于身份验证的密钥,可以使用命令 openssl rand -hex 32 生成
LETTERFEED_AUTH_USERNAME 身份验证的用户名
LETTERFEED_AUTH_PASSWORD 身份验证的密码

其中 :

  1. 192.168.0.197 为老苏的群晖主机的 IP,你需要按自己的 IP 进行修改;
  2. 一个支持在 993 端口上运行 IMAP over SSL 安全连接的邮箱;

docker-compose.yml

将下面的内容保存为 docker-compose.yml 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
services:
backend:
image: ghcr.io/leonmuscoden/letterfeed-backend:latest
restart: unless-stopped
env_file:
- env.txt
volumes:
- ./data:/data

frontend:
image: ghcr.io/leonmuscoden/letterfeed-frontend:latest
restart: unless-stopped
env_file:
- env.txt
ports:
- "3730:3000"
depends_on:
- backend

然后执行下面的命令

1
2
3
4
5
6
7
8
9
10
# 新建文件夹 letterfeed 和 子目录
mkdir -p /volume1/docker/letterfeed/data

# 进入 letterfeed 目录
cd /volume1/docker/letterfeed

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d

运行

在浏览器中输入 http://群晖IP:3730 就能看到登录界面

用环境变量中 LETTERFEED_AUTH_USERNAMELETTERFEED_AUTH_PASSWORD 设置的值 laosu/123456 登录

登录成功的主界面

测试邮件设置是否正确,Settings –> Test Connection

因为 88 邮箱是老苏专用的测试邮箱,所以没有任何的新闻订阅,只能写封测试邮件了

发送完成后,在 88 邮箱中刷新一下,确实已经收到了,不要点开

回到 LetterFeed,点 Add Newsletter 或者 Add Your First Newsletter

  • Newsletter Name:名称
  • Custom URL:会出现在订阅地址中
  • Move To Folder:邮件处理逻辑,可以将其移动到其他文件夹
  • Email Addresses:需要跟踪转换的发件人邮箱

添加完成之后

等一会儿,或者直接 Process Now ,会看到有 1 条了

FreshRSS 为例添加订阅源

  • 源地址:为 http://群晖IP:3730/api/feeds/outlook
  • 订阅源类型:为默认的 RSS/Atom

设置没问题的话,很快就会看到

点开看看,就是我们发的内容

参考文档

LeonMusCoden/LetterFeed: Convert email newsletters into RSS feeds
地址:https://github.com/LeonMusCoden/LetterFeed