Spaces:
Sleeping
Sleeping
| 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) | |