# mailnet **Repository Path**: ldh2025/mailnet ## Basic Information - **Project Name**: mailnet - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-31 - **Last Updated**: 2026-03-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MailNet - 基金净值与估值表邮件处理系统 MailNet 是一个自动化的邮件处理系统,专门用于从各大券商发送的邮件中提取基金净值数据和估值表负债信息,并将其存储到后端数据库。系统支持多种券商邮件格式的自动解析和处理。 ## 项目概述 MailNet 系统通过 POP3 协议连接到企业邮箱,定期扫描并解析来自不同券商的邮件附件(Excel 文件),提取基金净值数据和估值表负债信息,然后通过 REST API 将数据存储到基金数据管理系统中。 ### 主要功能 - **自动邮件监控**:定期检查企业邮箱中的新邮件 - **多券商支持**:支持长城证券、长江证券、光大证券、广发证券、国泰海通证券、国信证券、华泰证券、银河证券、浙商证券、平安证券、招商证券、中信建投证券、中信中证投资等多家券商 - **数据提取**:从 Excel 附件中提取基金净值、累计净值、资产净值等关键数据 - **估值表处理**:专门处理估值表邮件,提取负债类数据(基金运营服务费、管理人报酬、应交税费、托管费、赎回待付款等) - **数据校验**:检查数据是否已存在,避免重复插入 - **错误处理与告警**:通过 Kafka 发送系统告警信息 - **心跳监控**:定期发送心跳信息确保系统正常运行 ## 系统架构 ``` mailnet/ ├── app/ # 应用启动模块 │ ├── run.py # 主程序入口 │ └── env.py # 环境初始化配置 ├── config/ # 配置文件 │ ├── config.py # 系统配置参数 │ └── GuZhi.json # 估值表解析配置 ├── src/ # 核心源代码 │ ├── mainmailNet.py # 主邮件处理类 │ ├── base.py # 基础处理器类 │ ├── handlers_config.py # 邮件处理器配置 │ ├── sendalarm.py # 告警发送模块 │ ├── sendSql.py # 数据库操作模块 │ └── [券商名称]mail.py # 各券商专用处理器 ├── shell/ # 部署脚本 │ ├── start.sh # 启动脚本 │ └── kill.sh # 停止脚本 └── sql/ # 数据库脚本 └── product_debt_value.sql # 负债表结构 ``` ## 安装与部署 ### 环境要求 - Python 3.8+ - 企业邮箱账户(支持 POP3) - Kafka 服务(用于告警) - 基金数据管理系统 API 端点 ### 依赖包 系统使用以下主要依赖: ```python # 核心依赖 pandas # 数据处理 numpy # 数值计算 kafka-python # Kafka 客户端 requests # HTTP 请求 lmt_data_api # 数据API接口 lmt_tools # 工具库 setproctitle # 进程名设置 ``` ### 配置说明 编辑 `config/config.py` 文件配置系统参数: ```python # 邮箱配置 email = "yunwei@sdmytz.com" password = "your_password" # 系统配置 time_interval = 10 # 检查间隔(分钟) heart_interval = 10 # 心跳间隔(秒) check_interval = 20 # 数据检查时间窗口(分钟) days_limit = 3 # 历史邮件处理天数 # API 端点配置 netInsert = "http://192.168.6.666:9700/fund-data/product-net-value/insert-batch" netQuery = "http://192.168.6.666:9700/fund-data/product-net-value/list" # ... 其他API配置 ``` ### 启动服务 使用提供的 shell 脚本启动服务: ```bash # 启动服务 cd shell ./start.sh # 停止服务 ./kill.sh ``` ## 邮件处理流程 1. **连接邮箱**:通过 POP3 协议连接到企业邮箱 2. **邮件筛选**:根据日期和时间筛选需要处理的邮件 3. **发件人识别**:根据发件人邮箱地址匹配对应的处理器 4. **附件解析**:提取 Excel 附件并解析数据 5. **数据转换**:将解析的数据转换为标准格式 6. **数据校验**:检查数据是否已存在于数据库 7. **数据存储**:通过 REST API 将数据存储到后端系统 8. **错误处理**:处理解析错误并发送告警 ## 支持的券商邮件格式 系统支持以下券商的邮件格式: | 券商名称 | 发件人邮箱 | 处理器类 | |---------|-----------|---------| | 长城证券 | wbgzsj@cgws.com | CGWSmail.ModuleHandler | | 长江证券 | cjtgdata@pbcjsc.com | CJZQmail.ModuleHandler | | 光大证券 | gzwb@ebscn.com | GDmail.ModuleHandler | | 广发证券 | gfwbfa@gf.com.cn | GFmail.ModuleHandler | | 国泰海通证券 | data@tg.gtht.com | GTJAmail.ModuleHandler | | 国信证券 | gxtgwbhs@guosen.com.cn | GXZQmail.ModuleHandler | | 华泰证券 | wbgz@htsc.com | HuaTaimail.ModuleHandler | | 银河证券 | jjglrpt@chinastock.com.cn | YHZQmail.ModuleHandler | | 浙商证券 | zszqwbfa@stocke.com.cn | ZSZQmail.ModuleHandler | | 平安证券 | PA_ZQ@service.pingan.com | PAmail.ModuleHandler | | 招商证券 | yywbfa@cmschina.com.cn | YYWBmail.ModuleHandler | | 中信建投证券 | fundcustody[2-5]@csc.com.cn | ZXJTmail.ModuleHandler | | 中信中证投资 | Auto-Disclosure@citics.com | CiticsMail.ModuleHandler | ## 数据格式 ### 基金净值数据格式 ```python { "productName": "产品名称", "netDate": "净值日期", "netValue": "净值", "acumulateNetValue": "累计单位净值", "feeNetValue": "基金资产净值", "shareValue": "实收资本", "totalValue": "资产总值", "createTime": "创建时间", "updateTime": "更新时间" } ``` ### 估值表负债数据格式 ```sql CREATE TABLE `product_debt_value` ( `ID` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '递增', `ProductName` varchar(255) COMMENT '产品名称', `TradingDay` date COMMENT '净值日期', `FundOpCost` varchar(255) COMMENT '基金运营服务费', `PerformancePay` varchar(255) COMMENT '管理人报酬', `TaxFee` varchar(255) COMMENT '应交税费', `CustodyFee` varchar(255) COMMENT '托管费', `RedeemFund` varchar(255) COMMENT '赎回待付款', `OtherFee` varchar(255) COMMENT '其它应付款', `Liabilities` varchar(255) COMMENT '负债合计', `CreateTime` datetime COMMENT '创建时间', `UpdateTime` datetime COMMENT '更新时间' ) ``` ## 告警系统 系统通过 Kafka 发送告警信息,告警格式如下: ```json { "Title": "Alarm", "Content": [ { "ID": 1, "ColoName": "Dev", "AppName": "MailNet", "Msg": "告警信息内容" } ] } ``` ## 故障排除 ### 常见问题 1. **邮箱连接失败** - 检查邮箱密码是否正确 - 确认 POP3 服务是否开启 - 检查网络连接 2. **数据解析错误** - 检查邮件附件格式是否符合预期 - 验证 Excel 文件结构 - 查看日志文件了解具体错误 3. **API 调用失败** - 检查后端服务是否正常运行 - 验证 API 端点配置是否正确 - 查看网络连接状态 ### 日志查看 系统日志存储在 `log/` 目录下,可通过日志文件了解系统运行状态和错误信息。 ## 开发指南 ### 添加新的券商处理器 1. 在 `src/` 目录下创建新的处理器文件,例如 `NewBrokerMail.py` 2. 继承 `BaseHandler` 类并实现 `handle` 方法 3. 在 `handlers_config.py` 中添加新的处理器配置 4. 如果需要特殊配置,在 `config/GuZhi.json` 中添加对应的配置项 ### 处理器示例 ```python from base import BaseHandler import pandas as pd class NewBrokerHandler(BaseHandler): def handle(self, msg, value): # 实现邮件解析逻辑 # 提取附件并解析数据 # 调用 sendsql 函数存储数据 pass ``` ## 许可证 本项目为内部系统,仅供授权使用。 ## 技术支持 如有问题请联系系统管理员或开发团队。