• 欢迎加入MineBBS QQ讨论群:点击查看所有的官方讨论群
  • 我们将于近期对服务器进行迁移,服务可能中断至多2日。请各位安排好自己的访问计划,造成不便敬请谅解!
  • MineBBS入站考试已经上线!想要成为【正式会员】解锁更多功能吗?快来参与吧!【点我去看】
【folia,paper支持】xvmail 一款有点好用的邮件系统

原创 开源 【folia,paper支持】xvmail 一款有点好用的邮件系统 1.7.0

请登录后获取
更换下载网站,解决无法下载的问题
文件不小心上传错了,不好意思,重新上传了一遍,这次对了,重新下载即可
修复更新后新版本和旧版本无法正常加载此插件的bug

v1.6.0​


  • ✅ 新增 SMTP 真实邮件发送
  • ✅ 新增邮箱绑定 + 验证码验证
  • ✅ 新增 auto-send-real-email 自动同步真实邮件
  • ✅ 新增 /mailadmin reload 增强(重载 SMTP/邮箱绑定/配置补全)
  • ✅ 新增 notifyRecipient 统一通知(普通/群发/全服邮件均走统一路径)
  • ✅ 修复上线弹窗线程安全问题
  • ✅ 修复配置文件缺失项不自动补全
  • ✅ 修复绑定邮箱/收到邮件缺少命令提示
  • ✅ 公开 API 供第三方插件接入
修复:邮箱绑定提示不完整的问题,和各种问题
总结一下 xvmail v1.6.0 新增的三个功能:



1. SMTP 真实邮件发送
  • 轻量级纯 Java Socket 实现,不依赖外部库
  • 支持 SSL(端口465)/ TLS-STARTTLS(端口587)
  • 异步发送,不阻塞主线程
  • 管理员可测试:/mailadmin smtp test 和 /mailadmin smtp send <邮箱> <内容>
  • 配置在 config.yml 的 smtp 节点,常见邮箱(QQ、163、Gmail、Outlook)都有预设参考


2. 玩家邮箱绑定 + 验证码验证
  • /mail bindemail <邮箱> → 发送验证码 → /mail verifyemail <验证码> 确认
  • /mail unbindemail 解绑,/mail myemail 查看
  • 防刷保护:每日绑定尝试次数限制
  • 验证码可配置长度和过期时间
  • 绑定数据独立存储在 email_bindings.yml


3. 公开 API(供其他插件接入)
如果您在config.yml上看不到这些配置,可能的原因是:

  1. 使用的是旧版本 config.yml - 插件首次运行后,配置文件已存在,不会自动更新
  2. 需要手动添加 - 您可以将下面的配置复制到服务器上的 plugins/xvmail/config.yml 文件末尾(查看缺少的部分补齐)
  3. 代码:
    # xvmail 配置文件
    # 版本: 1.6.0
    
    # 邮件设置
    mail:
      # 每日发送限制(拥有xvmail.unlimited权限的玩家无限制)
      daily-limit: 10
      # 邮件过期天数(0表示永不过期)
      expire-days: 30
      # 是否启用GUI界面
      gui-enabled: true
      # 附件功能启用
      attachment-enabled: true
      # 玩家上线时自动打开收件箱(如果有未读邮件)
      auto-open-inbox: true
      # 自动打开收件箱延迟(ticks,1秒=20tick)
      auto-open-delay: 40
      # 自动清理设置
      auto-cleanup:
        # 是否启用自动清理
        enabled: true
        # 清理间隔(小时)
        interval-hours: 24
        # 是否记录清理日志
        log-cleanup: true
    
      # ====== 超限扣费设置 ======
      # 超出每日限制后是否允许付费继续发送
      exceed-limit-enabled: true
      # 扣费货币类型: vault / playerpoints
      # vault = Vault金币, playerpoints = PlayerPoints点券
      exceed-limit-currency: vault
      # 超限每次发送扣费金额
      exceed-limit-cost: 100
      # 超限后每日最多额外发送次数(0=无限制)
      exceed-limit-max-extra: 5
    
      # ====== 群发邮件设置 ======
      # 是否启用群发邮件功能
      broadcast-enabled: true
      # 群发邮件权限节点: xvmail.broadcast
      # 群发扣费货币类型: vault / playerpoints
      broadcast-currency: vault
      # 群发扣费金额(固定费用,不管发送给多少人)
      broadcast-cost: 500
      # 群发邮件默认主题
      broadcast-subject: "&6&l[群发邮件]"
      # 群发范围: online / all
      # online = 仅在线玩家, all = 所有曾登录的玩家
      broadcast-scope: online
    
    # 数据库设置
    database:
      # 数据存储类型: yaml 或 sqlite
      # yaml - 轻量级,每个玩家一个YAML文件,不依赖额外库
      # sqlite - 使用SQLite数据库,需要JDBC驱动
      type: yaml
      # SQLite模式下数据库文件路径
      file: plugins/xvmail/mail.db
    
    # 消息配置
    messages:
      # 发送成功
      send-success: "&a邮件发送成功!"
      # 发送失败
      send-failed: "&c邮件发送失败,请稍后重试!"
      # 每日限制到达
      daily-limit-reached: "&c今日发送次数已达上限(%limit%次)!"
      # 超限扣费提示
      exceed-limit-hint: "&e今日免费次数已用完,继续发送需扣除 &6%cost% %currency%&e,输入 &a/mail sendex <玩家> <内容> &e付费发送"
      # 超限扣费成功
      exceed-limit-success: "&a已扣除 &e%cost% %currency%&a,邮件发送成功!"
      # 超限扣费余额不足
      exceed-limit-insufficient: "&c%currency%不足!需要 &e%cost% %currency%&c,当前: &e%balance% %currency%"
      # 超限额外次数已用完
      exceed-limit-extra-reached: "&c今日付费发送次数也已用完(%max%次)!明天再来吧"
      # 超限功能未启用
      exceed-limit-disabled: "&c今日发送次数已达上限,且付费发送功能未启用!"
      # 经济系统不可用
      economy-unavailable: "&c经济系统未启用,无法使用付费发送功能!"
      # 群发邮件发送中
      broadcast-sending: "&e正在发送群发邮件..."
      # 群发邮件成功
      broadcast-success: "&a群发邮件已发送给 &e%count% &a位玩家!扣除 &e%cost% %currency%"
      # 群发邮件余额不足
      broadcast-insufficient: "&c群发邮件需要 &e%cost% %currency%&c,当前: &e%balance% %currency%"
      # 群发邮件无权限
      broadcast-no-permission: "&c您没有群发邮件的权限!需要 &exvmail.broadcast &c权限"
      # 群发邮件功能未启用
      broadcast-disabled: "&c群发邮件功能未启用!"
      # 玩家不存在
      player-not-found: "&c玩家 &e%player% &c不存在!"
      # 玩家不在线
      player-offline: "&c玩家 &e%player% &c不在线且从未登录过!"
      # 无邮件
      no-mail: "&e您还没有收到任何邮件!"
      # 邮件不存在
      mail-not-found: "&c邮件不存在或已被删除!"
      # 删除成功
      delete-success: "&a邮件已删除!"
      # 清空成功
      clear-success: "&a邮箱已清空!"
      # 邮件已读
      mail-read: "&e=== 邮件 #%id% ===\n&f发件人: &b%sender%\n&f时间: &7%time%\n&f内容: &r%content%"
      # 附件提示
      attachment-hint: "&e请手持要发送的物品,然后输入邮件内容"
      # 附件已添加
      attachment-added: "&a附件已添加,请输入邮件内容"
      # 重载成功
      reload-success: "&a配置已重载!"
      # 帮助信息
      help:
        - "&6=== 邮件系统帮助 ==="
        - "&e/mail &7- 打开邮件主菜单"
        - "&e/mail send <玩家> <内容> &7- 发送邮件"
        - "&e/mail sendex <玩家> <内容> &7- 付费发送邮件(超限后)"
        - "&e/mail broadcast <内容> &7- 群发邮件(需权限+扣费)"
        - "&e/mail list &7- 查看邮件列表"
        - "&e/mail read <id> &7- 阅读邮件"
        - "&e/mail clear <id> &7- 删除邮件"
        - "&e/mail clear all &7- 清空邮箱"
        - "&e/mail bindemail <邮箱> &7- 绑定真实邮箱"
        - "&e/mail verifyemail <验证码> &7- 验证邮箱"
        - "&e/mail unbindemail &7- 解绑邮箱"
        - "&e/mail myemail &7- 查看绑定邮箱"
    
    # GUI界面设置
    gui:
      # 主菜单标题
      main-title: "&6✉ 邮件系统"
      # 收件箱标题
      inbox-title: "&6✉ 收件箱"
      # 发送邮件标题
      send-title: "&6✉ 发送邮件"
      # 每页邮件数量
      page-size: 28
    
    # 日志设置
    logging:
      # 是否启用日志文件
      enabled: true
      # 日志文件路径
      file: logs/xvmail.log
      # 是否记录到服务器日志
      console: true
    
    # ====== SMTP 真实邮件发送设置 ======
    smtp:
      # 是否启用 SMTP 邮件发送(需要配置下面的 SMTP 信息)
      enabled: false
      # SMTP 服务器地址
      host: smtp.example.com
      # SMTP 端口(25=明文, 465=SSL, 587=TLS/STARTTLS)
      port: 587
      # SMTP 认证用户名
      username: noreply@example.com
      # SMTP 认证密码(建议使用应用专用密码)
      password: your-password
      # 发件人邮箱地址
      from-address: noreply@example.com
      # 发件人显示名称
      from-name: "MC Server Mail"
      # 是否使用 SSL(端口465通常需要)
      use-ssl: false
      # 是否使用 TLS/STARTTLS(端口587通常需要)
      use-tls: true
      # 连接超时(毫秒)
      timeout: 10000
    
    # ====== 邮箱绑定设置 ======
    email-bind:
      # 是否启用邮箱绑定功能
      enabled: true
      # 是否需要邮箱验证(需要SMTP启用)
      require-verify: true
      # 验证码长度
      verification-code-length: 6
      # 验证码过期时间(分钟)
      verification-expire-minutes: 10
      # 最大绑定尝试次数(防刷,每天重置)
      max-bind-attempts: 5
      # 玩家收到游戏内邮件时是否自动同步发送真实邮件(需要SMTP启用且玩家已绑定验证邮箱)
      auto-send-real-email: false
解决方案:

  • 方法1:手动将上述配置添加到服务器的 config.yml 文件中
  • 方法2:删除服务器上的 config.yml 文件,重启服务器让插件重新生成
新增群发功能,修复指令问题,现在可使用/mail指令打开gui了,把以前的xvmail换成mail即可
新增超过每日限制后需要花费金币或点券进行发送(playerpoints或valut都行)
后退
顶部 底部