随着企业数字化转型的深入,邮件作为企业内部和外部沟通的重要工具,其自动化处理和管理变得越来越重要。飞书邮件服务项目旨在构建一个基于飞书API的邮件自动化处理系统,实现邮件的自动接收、分析、处理和转发等功能。
该项目可以帮助企业提高邮件处理效率,减少人工操作,降低人力成本,同时提高邮件处理的准确性和及时性。特别是在招聘场景下,自动简历分析功能可以大大提高HR的工作效率。
| 类别 | 技术/框架 | 版本 | 用途 |
|---|---|---|---|
| 后端语言 | Python | 3.9+ | 主要开发语言 |
| Web框架 | 内置http.server | - | 邮件发送服务 |
| API客户端 | 飞书官方SDK | latest | 飞书API调用 |
| AI模型 | 自定义AI客户端 | - | 简历分析和内容提取 |
| PDF处理 | pdfplumber/pypdf | latest | PDF简历解析 |
| 数据存储 | JSON文件 | - | 令牌和配置存储 |
| 日志管理 | Python logging | - | 系统日志记录 |
邮件监听器模块负责通过飞书API建立长连接,实时监听指定邮箱的邮件事件。当有新邮件到达时,触发相应的处理逻辑。
class FeishuMailEventListener:
def __init__(self):
# 初始化配置和依赖
self.feishu_config = FEISHU_CONFIG
self.token_manager = FeishuTokenManager()
# 初始化邮件处理器
self.mail_processor = FeishuMailProcessor(self.token_manager)
# 初始化增强版简历分析器
self.resume_analyzer = EnhancedResumeAnalyzer()
# 初始化简道云简历上传API客户端
self.jiandao_resume_api = JiandaoyunResumeAPI(...)
def start_listener(self):
# 启动事件监听器
ws_client = lark.ws.Client(
self.app_id,
self.app_secret,
event_handler=self.event_handler,
log_level=lark.LogLevel.INFO
)
ws_client.start()
邮件处理器模块负责处理监听到的邮件事件,包括获取邮件详情、解析邮件内容、提取关键信息等。
AI分析模块负责对邮件内容和附件进行智能分析,特别是对简历附件的自动分析和结构化处理。
邮件发送服务模块负责提供稳定可靠的邮件发送功能,支持通过飞书API发送邮件。
class MailSenderRequestHandler(http.server.BaseHTTPRequestHandler):
def do_POST(self):
# 处理邮件发送请求
request_data = json.loads(post_data)
mail_address = request_data.get("mail_address")
mail_data = request_data.get("mail_data")
send_result = self.send_feishu_mail(mail_address, mail_data)
def send_feishu_mail(self, mail_address, mail_data):
# 调用飞书API发送邮件
access_token = self.get_access_token(mail_address)
api_url = f"{FEISHU_CONFIG['API_BASE_URL']}/mail/v1/user_mailboxes/{mail_address}/messages/send"
headers = {
"Authorization": f"Bearer {access_token}",
"Content-Type": "application/json"
}
# 转换邮件格式
modified_mail_data = self._convert_mail_format(mail_data)
response = requests.post(api_url, headers=headers, json=modified_mail_data, timeout=10)
return response.json()
项目集成了飞书官方SDK,实现了与飞书API的高效交互,包括邮件事件监听、邮件详情获取、邮件发送等功能。
项目集成了自定义AI模型,实现了对邮件内容和简历的智能分析和结构化处理。
项目采用了多种高可用性设计,确保系统的稳定运行。
在处理复杂的简历分析请求时,AI模型需要较长时间生成响应,导致请求超时。
# 在ai_client.py中修改默认超时时间
def __init__(self, api_base_url="http://121.41.121.32:7002/v1", timeout=60):
self.api_base_url = api_base_url
self.timeout = timeout
self.headers = {
"Content-Type": "application/json"
}
# 在enhanced_resume_analyzer.py中初始化时指定超时时间
def __init__(self):
self.ai_client = CustomAIClient(timeout=60)
服务重启时,经常遇到端口被占用的问题,导致服务无法启动。
# 自定义TCPServer类,支持端口复用
class ReuseAddressTCPServer(socketserver.TCPServer):
allow_reuse_address = True
# 使用自定义的TCPServer类
with ReuseAddressTCPServer((SERVER_HOST, PORT), MailSenderRequestHandler) as httpd:
httpd.serve_forever()
由于网络波动或其他原因,系统可能会重复处理同一封邮件。
# 幂等性检查
if message_id in self.processed_message_ids:
logger.debug(f"该邮件(message_id: {message_id})已处理过,跳过重复处理")
return
# 处理完成后添加到已处理列表
self.processed_message_ids.add(message_id)
self._save_processed_message_ids()
飞书邮件服务项目是一个基于飞书API的邮件自动化处理系统,实现了邮件的自动接收、分析、处理和发送等功能。项目采用了模块化设计,具有良好的扩展性和可维护性。
通过本次项目,我们积累了以下经验:
未来,我们将继续优化系统,增强功能,提高性能,为企业提供更加稳定、高效的邮件自动化处理服务。