jvitasek/nwsltr

PHP 8、Vue.js、Doctrine ORM 和 Nette 框架上现成的自托管邮件系统


README

Build Status License Open Source Software

此项目包含一个用 PHP8、Nette 框架、Doctrine 2 和 Vue.js 编写的现成自托管邮件系统

系统要求

  • >= PHP 8.0
  • >= MySQL 8
  • Redis 服务器
  • Composer
  • Yarn + Webpack

安装

通过 Composer 安装此项目是最佳方式

$ composer create-project jvitasek/nwsltr

或直接克隆此存储库

$ git clone https://github.com/jvitasek/nwsltr.git

一旦你有了项目文件,请执行以下操作

  1. 创建一个空的 MySQL 数据库
  2. 创建一个新的文件 config/test.neon,并将 config/test.sample.neon 的内容复制进去

现在你有两种选择

自动安装(推荐)

  1. 设置初始化脚本的正确权限:$ chmod +x bin/init(仅限 UNIX)
  2. 运行 $ bin/init,它将处理所有必要的配置

手动安装

  1. 在根目录中创建目录 log 和 temp($ mkdir log temp && chmod +x log temp
  2. $ composer i
  3. $ php bin/console orm:clear-cache:metadata
  4. $ php bin/console o:s:u -f
  5. $ chmod +x bin/*(仅限 UNIX)
  6. $ php bin/console doctrine:fixtures:load -n
  7. $ cd www/FrontModule && yarn && yarn build

自托管使用

在安装步骤中,你已将固定数据加载到新创建的数据库中。这些固定数据包含一个示例账户和一个用户。安装完成后,你可以使用这些凭据访问网站并登录

电子邮件:admin@sample.com
密码:secret

使用这些凭据,你可以以管理员身份访问系统。建议在创建一个新的强密码账户后删除此账户。

Crontab 设置

当你自托管此应用程序时,你需要设置一个 cronjob 以自动发送计划中的邮件。

1-59 * * * * php bin/console mailing:send

或者,你可以在需要发送通讯时运行此命令

# does a dry run not actually sending the e-mails
$ php bin/console mailing:send -t

# actually sends the e-mails
$ php bin/console mailing:send

测试

此软件包附带一些现成的测试。

验收测试

对于验收测试,使用了 Codeception。你可以这样运行这些测试

$ php vendor/bin/codecept run --steps

单元测试

单元和功能测试使用 Nette Tester 运行

$ vendor/bin/tester -c tests/tester/php.ini tests/tester

静态分析

有两种静态分析工具可以帮助检测和修复代码中的错误。

PHPStan

$ vendor/bin/phpstan analyse

带有错误检测的 PHP_CodeSniffer

$ vendor/bin/phpcs --standard=ruleset.xml --extensions=php --tab-width=4 -sp app

带有错误修复的 PHP_CodeSniffer

$ vendor/bin/phpcbf --standard=ruleset.xml --extensions=php --tab-width=4 -sp app

Web 应用程序使用

所有用例都需要首先登录。以下各节将假设你已经登录到系统中。

创建收件人数据

首先创建一些收件人数据很重要,因为你不能在没有至少一个已订阅收件人的收件人组的情况下发送邮件。

  1. 访问左侧侧边栏中的“分组”部分
  2. 创建你想要发送邮件的组(例如“高尔夫球手”)
  3. 现在你有 2 种选择
    1. 使用 Excel 文件将收件人导入到创建的组中
    2. 在“收件人”部分手动添加收件人,并在他们的“收件人组”字段中指示创建的组

创建邮件

现在系统中已经有了一些收件人数据,我们可以开始构建新的邮件活动。

  1. 前往左侧边栏的邮件部分,然后点击右上角创建邮件按钮
  2. 在编辑器中,按照以下步骤操作
    1. 点击屏幕左上角的铅笔图标,填写邮件标题、主题和日期。然后指定哪些收件人组应该接收该邮件。
    2. 点击屏幕左上角的加号图标,使用组件构建您的邮件模板。
  3. (可选) 您可以通过点击屏幕右上角的预览按钮来查看您的进度预览。
  4. 完成模板构建后,您可以点击后退按钮返回邮件数据网格。
  5. 现在您已准备好将新创建的邮件状态设置为就绪。根据邮件编辑器中设置的日期,系统将在达到日期后自动发送邮件(cron表应理想地每分钟运行一次)