import smtplib import markdown2 from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from logger import LOG class Notifier: def __init__(self, email_settings): self.email_settings = email_settings def notify_github_report(self, repo, report): """ 发送 GitHub 项目报告邮件 :param repo: 仓库名称 :param report: 报告内容 """ if self.email_settings: subject = f"[GitHub] {repo} 进展简报" self.send_email(subject, report) else: LOG.warning("邮件设置未配置正确,无法发送 GitHub 报告通知") def notify_hn_report(self, date, report): """ 发送 Hacker News 每日技术趋势报告邮件 :param date: 报告日期 :param report: 报告内容 """ if self.email_settings: subject = f"[HackerNews] {date} 技术趋势" self.send_email(subject, report) else: LOG.warning("邮件设置未配置正确,无法发送 Hacker News 报告通知") def send_email(self, subject, report): LOG.info(f"准备发送邮件:{subject}") msg = MIMEMultipart() msg['From'] = self.email_settings['from'] msg['To'] = self.email_settings['to'] msg['Subject'] = subject # 将Markdown内容转换为HTML html_report = markdown2.markdown(report) msg.attach(MIMEText(html_report, 'html')) try: with smtplib.SMTP_SSL(self.email_settings['smtp_server'], self.email_settings['smtp_port']) as server: LOG.debug("登录SMTP服务器") server.login(msg['From'], self.email_settings['password']) server.sendmail(msg['From'], msg['To'], msg.as_string()) LOG.info("邮件发送成功!") except Exception as e: LOG.error(f"发送邮件失败:{str(e)}") if __name__ == '__main__': from config import Config config = Config() notifier = Notifier(config.email) # 测试 GitHub 报告邮件通知 test_repo = "DjangoPeng/openai-quickstart" test_report = """ # DjangoPeng/openai-quickstart 项目进展 ## 时间周期:2024-08-24 ## 新增功能 - Assistants API 代码与文档 ## 主要改进 - 适配 LangChain 新版本 ## 修复问题 - 关闭了一些未解决的问题。 """ notifier.notify_github_report(test_repo, test_report) # 测试 Hacker News 报告邮件通知 hn_report = """ # Hacker News 前沿技术趋势 (2024-09-01) ## Top 1:硬盘驱动器的讨论引发热门讨论 关于硬盘驱动器的多个讨论,尤其是关于未使用和不需要的硬盘驱动器的文章,显示出人们对科技过时技术的兴趣。 详细内容见相关链接: - http://tom7.org/harder/ - http://tom7.org/harder/ ## Top 2:学习 Linux 的重要性和 Bubbletea 程序开发 有关于 Linux 的讨论,强调了 Linux 在现代开发中的重要性和应用性,以及关于构建 Bubbletea 程序的讨论,展示了 Bubbletea 在开发中的应用性和可能性。 详细内容见相关链接: - https://opiero.medium.com/why-you-should-learn-linux-9ceace168e5c - https://leg100.github.io/en/posts/building-bubbletea-programs/ ## Top 3:Nvidia 在 AI 领域中的强大竞争力 有关于 Nvidia 的四个未知客户,每个人购买价值超过 3 亿美元的讨论,显示出 N 维达在 AI 领域中的强大竞争力。 详细内容见相关链接: - https://fortune.com/2024/08/29/nvidia-jensen-huang-ai-customers/ """ notifier.notify_hn_report("2024-09-01", hn_report)