#发票 #用户 #文件夹 #后端 #提取 #存储

app invoice2storage

提取电子邮件附件并将它们存储在不同的后端,如webdav或文件夹

1 个不稳定版本

0.4.0 2023年2月9日

206电子邮件

GPL-3.0-or-laterAGPL-3.0-or-later

75KB
840

Invoice2storage

为企业环境中的发票提供简单处理。

工作流程

每个用户都得到一个可供办公室访问的文件夹。用户可以将他们的发票转发到特定的电子邮件地址,如 [email protected]

办公室有一个地方可以收集所有发票。

操作

此脚本用作电子邮件过滤器以处理传入的发票电子邮件。

  1. 此脚本解析来自stdin或文件的电子邮件
  2. 它确定此发票属于哪个用户
    • 如果目标电子邮件包含+后缀,则该后缀是用户
    • 如果发件人和收件人的域名匹配,则发件人是用户
  3. 它尝试提取特定MIME类型的所有附件,默认为pdf文件。
  4. 它根据模板指定的文件夹存储提取的附件
  5. 它将电子邮件存储在配置的文件夹和后端

安装

使用cargo

cargo install invoice2storage

使用nix flake

您可以将此存储库添加到您的NixOS flake配置中。

配置

所有设置都可以通过命令行参数或放入yaml文件中。有关选项的完整列表,请参阅 --help

MTA配置

大多数MTA支持.forward管道支持,这允许您像这样配置invoice2storage

~/.forward包含

|/path/to/invoice2storage --arguments....

开发

所有开发工具都使用nix包管理器,该管理器可用于任何Linux发行版。这允许100%可重复和可工作的开发环境。

开发服务器

集成测试使用使用以下命令创建的NixOS VM执行

nixos-rebuild build-vm --flake .#testvm

QEMU_OPTS="-netdev bridge,id=hn0,br=intern -device e1000,netdev=hn0" ./result/bin/run-i2s-test-vm

The QEMU_OPTS取决于您的系统,在此示例中,VM连接到本地桥接intern

可以使用以下命令运行测试

env RUST_BACKTRACE=1 TARGET=10.0.42.158  /home/poelzi/b1/invoice2storage/scripts/nix-cargo test --package invoice2storage --bin invoice2storage -- --include-ignored

环境变量TARGET是VM地址。

建议的VSCode工作区设置

   "cSpell.customDictionaries": {
      "custom-dictionary-workspace": {
         "name": "custom-dictionary-workspace",
         "path": "${workspaceFolder:invoice2storage}/.cspell/custom-dictionary-workspace.txt",
         "addWords": true,
         "scope": "workspace"
      }
   },
   "rust-analyzer.runnables.command": "${workspaceFolder}/scripts/nix-cargo",
   "cargo.automaticCheck": false,

依赖项

~27–40MB
~813K SLoC