夜雨聆风学习资料网

ARTICLE · 1101232

【项目源码】情侣纪念日邮件系统,程序员的浪漫:写了个程序,每天替我说「我爱你」

【项目源码】情侣纪念日邮件系统,程序员的浪漫:写了个程序,每天替我说「我爱你」
关注微信公众号:【源码部落】,获取开源项目分享。

一、项目介绍

一款基于纯 PHP 开发的纪念日邮件系统源码,无需任何框架依赖,支持虚拟主机直接部署。

项目定位为「情感化的定时邮件服务」——用户注册账号后,可设置与另一半在一起的日期、对方邮箱、所在城市等信息,系统会自动或手动发送一封精美的 HTML 邮件给对方,邮件内容包含:在一起的天数、当日实时天气与穿衣建议、纪念日倒计时、每日情话等温馨内容。

项目内置完整的会员系统。免费用户注册即获赠 5 次发送机会,之后每月 3 次免费额度;VIP 用户则享有无限次发送、每日自动定时发送、自定义邮件内容、多纪念日管理、专属公开展示页等特权。

整个系统开箱即用,提供一键安装向导(install.php),自动创建数据库表和初始数据,适合个人站长、自媒体博主快速搭建变现。


二、项目结构目录

JP10-邮箱表白纪念日源码/│├── includes/                          # 核心公共文件│   ├── config.php                     # 全局配置(数据库/SMTP/天气API/会员规则/卡密类型)│   ├── db.php                         # PDO 数据库封装类(单例模式,含 site_config 读写)│   ├── functions.php                  # 公共函数库(Session/用户/纪念日/卡密/CSRF/分页)│   ├── mail.php                       # 邮件发送类(原生 SMTP,无需 composer)│   ├── weather.php                    # 和风天气 API 封装(城市查询/实时天气/穿衣建议)│   └── sidebar.php                    # 用户前台侧边栏组件│├── admin/                             # 管理后台│   ├── .htaccess                      # 目录保护│   ├── index.php                      # 后台首页(统计概览 + 快捷操作)│   ├── login.php                      # 管理员登录│   ├── logout.php                     # 退出登录│   ├── users.php                      # 用户管理(封禁/解封/赠VIP/添加备注)│   ├── cards.php                      # 卡密管理(批量生成/查看/删除)│   ├── quotes.php                     # 情话管理(增删改查)│   └── includes/│       └── admin_sidebar.php          # 后台侧边栏组件│├── api/│   └── logout.php                     # 前台退出登录接口│├── assets/                            # 静态资源│   ├── css/│   │   └── style.css                  # 全局样式(渐变紫粉主题,响应式布局)│   └── js/│       └── app.js                     # 前端交互脚本│├── .htaccess                          # 根目录 URL 重写/保护├── 404.html                           # 自定义 404 页面├── index.php                          # 首页(Landing Page,含数据统计展示)├── login.php                          # 用户登录├── register.php                       # 用户注册(注册赠送 5 次发送机会)├── dashboard.php                      # 用户后台首页(在一起天数/天气/纪念日倒计时/发送记录)├── settings.php                       # 纪念日设置(增/删/改,VIP 可开启自动发送)├── send.php                           # 手动发送邮件页面├── history.php                        # 邮件发送记录├── love.php                           # VIP 专属:公开纪念日展示页(/love.php?s=slug)├── memo.php                           # 用户备忘录(VIP 支持定时提醒邮件)├── vip.php                            # 会员中心 / 卡密激活页├── cron.php                           # 定时任务(每10分钟执行,自动发送到期邮件)├── install.php                        # 一键安装向导(用后需删除)└── README.md                          # 项目说明文档

三、项目主要技术框架

维度
技术选型
说明
‎后端语言
PHP ≥ 7.4(推荐 8.0+)
纯原生 PHP,不依赖任何框架
‎数据库
MySQL ≥ 5.7 / MariaDB ≥ 10.3
使用 PDO 扩展,预处理语句防 SQL 注入
‎数据库封装
PDO(单例模式)
‎includes/db.php 中的 ‎DB 类,封装 ‎exec/‎fetchOne/‎fetchAll/‎fetchValue/‎config 等方法
‎邮件发送
原生 SMTP(fsockopen)
不依赖 PHPMailer/composer,直接通过 socket 实现 SMTP 握手、AUTH LOGIN 认证、MIME 邮件构建
‎天气数据
和风天气 API(QWeather)
通过 cURL 请求 ‎devapi.qweather.com,支持城市 ID 查询 → 实时天气 → 穿衣建议
‎前端样式
原生 CSS(内联 + 外部 style.css)
渐变紫粉主题,响应式布局,无前端框架依赖
‎前端交互
原生 JavaScript
‎assets/js/app.js,无 jQuery/Vue/React 依赖
‎邮件模板
内联 HTML + CSS
兼容各邮箱客户端,渐变背景 + 圆角卡片设计
‎安全机制
CSRF Token / Session / PDO 预处理
‎httponly Cookie、‎use_strict_mode、全局异常处理器
‎定时任务
Cron + cron.php
每 10 分钟执行,时间窗口匹配(±5 分钟),防重复发送
‎部署方式
虚拟主机 / VPS / 宝塔面板
无需命令行安装,上传即用

数据库表结构

系统共 7 张数据表:

表名
用途
‎users
用户表(邮箱/密码/昵称/VIP等级/VIP到期/免费次数/发送总量/状态)
‎anniversaries
纪念日表(用户ID/标题/在一起日期/纪念日日期/类型/对方信息/城市/自动发送/发送时间/自定义内容/自定义slug)
‎email_logs
邮件发送记录表(用户ID/纪念日ID/发送类型/收件邮箱/主题/状态/错误信息)
‎cards
卡密表(卡密码/类型/是否已用/使用者/使用时间/备注)
‎love_quotes
情话库表(内容/作者),安装时内置 25 条
‎site_config
站点配置表(键值对存储)
‎memos
备忘录表(用户ID/内容/提醒时间/是否发邮件/是否完成/是否管理员备注)

四、项目主要功能

4.1 用户系统

  • ‎注册/登录:邮箱注册,注册即赠送 5 次免费发送机会
  • ‎个人中心:展示在一起天数、今日天气、纪念日倒计时、发送记录
  • ‎状态管理:管理员可封禁/解封用户

4.2 会员卡密系统

  • 管理员后台批量生成卡M(最多 100 张/次),卡M格式为 ‎XXXX-XXXX-XXXX-XXXX
  • 用户在会员中心(‎/vip.php)输入卡M激活,支持 VIP 叠加(在剩余有效期基础上续期)
  • VIP 特权:无限次发送、每日自动定时发送、自定义邮件内容、多纪念日管理、专属公开展示页

4.3 纪念日管理

  • 添加/编辑/删除纪念日
  • 免费用户可管理 1 个纪念日,VIP 用户可管理无限个
  • 可设置:在一起日期、纪念日标题、对方姓名/邮箱、所在城市
  • VIP 可设置自动发送时间(默认 08:00)和自定义邮件内容
  • VIP 可设置自定义 slug,生成公开展示页(‎/love.php?s=your-slug)

4.4 邮件发送

  • ‎手动发送:用户在发送页面选择纪念日,立即发送邮件
  • ‎自动发送:VIP 用户开启后,通过 ‎cron.php 定时任务每日自动发送
  • ‎邮件内容包含:
    • 在一起的天数(大数字展示)
    • 当日实时天气(温度/体感/湿度/风向/穿衣建议)
    • 所有纪念日倒计时(30 天内即将到来的)
    • 每日情话(从数据库随机取,可后台管理)
    • VIP 自定义内容(可选)
  • 邮件为精美 HTML 模板,渐变紫粉配色,兼容各邮箱客户端

4.5 天气服务

  • 接入和风天气 API(免费版)
  • 两步请求:城市名称 → 城市 ID → 实时天气
  • 根据温度和天气自动生成穿衣建议(9 个温度区间 + 雨雪天带伞提醒)

4.6 备忘录功能

  • 用户可创建备忘事项(最多 500 字)
  • VIP 用户可设置定时邮件提醒
  • 支持标记完成 / 删除
  • 管理员可给用户添加管理备注

4.7 管理后台

页面
功能
概览首页
统计数据(总用户/VIP用户/卡密/今日发送/累计发送)+ 快捷操作
用户管理
搜索用户、封禁/解封、赠送 VIP、添加管理备注
卡M管理
批量生成卡M、筛选已用/未用、删除未使用卡M
情话管理
增删改查每日情话库

4.8 其他功能

  • ‎公开纪念日展示页:VIP 专属,通过 slug 访问,展示在一起天数和情话
  • ‎404 页面:自定义美化 404 页面
  • ‎全局异常处理:任何未捕获错误显示友好提示页,而非空白页
  • ‎CSRF 防护:表单提交携带 CSRF Token

五、项目安装和部署

5.1 系统要求

  • PHP ≥ 7.4(推荐 8.0+)
  • MySQL ≥ 5.7 / MariaDB ≥ 10.3
  • PHP 扩展:‎pdo_mysql、‎curl、‎openssl
  • 服务器可发起外部 HTTPS 请求(用于天气 API)

5.2 快速安装(一键安装向导)

步骤 1:上传文件

将整个项目文件夹上传至服务器网站根目录(如 /var/www/html/ 或宝塔面板的站点目录)。

步骤 2:访问安装向导

浏览器访问 http://yourdomain.com/install.php,在页面中填写以下配置:

  • ‎数据库配置:主机地址、数据库名、用户名、密码
  • ‎站点配置:站点名称、站点网址
  • ‎管理员账号:管理员邮箱、管理员密码
  • ‎SMTP 邮件配置:SMTP 服务器、端口、加密方式、发件邮箱、授权码
  • ‎和风天气 API:API Key(可选,不填则无天气功能)

点击「一键安装」,系统将自动:

  1. 测试数据库连接
  2. 创建数据库和全部 7 张数据表
  3. 写入 ‎includes/config.php 配置文件
  4. 插入 25 条内置情话数据和站点配置

步骤 3:删除安装文件

安装完成后,立即删除 install.php,防止他人重复安装。

5.3 手动配置(可选)

如不使用安装向导,可直接编辑 includes/config.php,修改以下关键配置项:

// 数据库define('DB_HOST', 'localhost');define('DB_NAME', 'anniversary');define('DB_USER', 'root');define('DB_PASS', 'your_password');// 管理员账号define('ADMIN_EMAIL',    'admin@yourdomain.com');define('ADMIN_PASSWORD', 'your_admin_password');// SMTP 邮件配置(以 QQ 邮箱为例)define('SMTP_HOST',   'smtp.qq.com');define('SMTP_PORT',   465);define('SMTP_SECURE', 'ssl');define('SMTP_USER',   'your@qq.com');define('SMTP_PASS',   'xxxxxxxxxxxxxxxx'); // QQ邮箱授权码,非登录密码// 和风天气 APIdefine('QWEATHER_KEY', 'your_qweather_key');

5.4 配置定时任务

自动发送功能需要配置服务器定时任务:

Linux crontab 方式:

crontab -e# 每10分钟检查一次,自动发送到期邮件*/10 * * * * php /var/www/html/cron.php >> /var/log/anniv_cron.log 2>&1

宝塔面板方式:

进入「计划任务」→「Shell 脚本」→ 填写 php /www/wwwroot/yoursite/cron.php,周期设置为每 10 分钟。

5.5 SMTP 配置说明

邮箱服务商
SMTP 主机
端口
密码说明
QQ 邮箱
smtp.qq.com
465 (SSL)
邮箱设置 → 账户 → 开启 POP3/SMTP → 生成授权码
163 邮箱
smtp.163.com
465 (SSL)
163 邮箱授权码
腾讯企业邮
smtp.exmail.qq.com
465 (SSL)
邮箱登录密码

5.6 和风天气 API 申请

  1. 访问 https://dev.qweather.com/
  2. 注册账号 → 创建项目 → 创建凭据
  3. 免费版使用 ‎devapi.qweather.com(已在 config.php 中默认配置)
  4. 付费版改为 ‎api.qweather.com
  5. 将 Key 填入 ‎config.php 的 ‎QWEATHER_KEY

5.7 安全建议

  1. 安装完成后删除 ‎install.php
  2. 修改管理员默认密码 ‎admin123456
  3. 设置 ‎.htaccess 禁止直接访问 ‎includes/ 目录:

Apache:

<Directory /var/www/html/includes>    Require all denied</Directory>

Nginx:

location /includes { deny all; }
  1. 生产环境关闭 ‎display_errors(将 ‎config.php 中 ‎ini_set('display_errors', 0))
  2. 确保 ‎includes/config.php 文件权限不可被外部直接下载

六、总结

恋恋时光 是一套完整的、可商用的纪念日邮件系统源码,核心特点:

  • ‎零依赖:纯 PHP + 原生 SMTP,无需 composer/框架,虚拟主机即可部署
  • ‎开箱即用:一键安装向导,自动建表建数据
  • ‎完整变现闭环:卡M生成 → 用户购买 → 卡M激活 → VIP 享受服务
  • ‎精美设计:渐变紫粉主题,邮件模板兼容各邮箱客户端
  • ‎功能丰富:天气/情话/倒计时/自定义内容/公开展示页/备忘录
  • ‎安全可靠:PDO 预处理、CSRF 防护、全局异常处理

这个项目源码获取方式

关注公众号,私信回复:JP10

相关学习资料