From 9ad1f2606518daa16f006d016b448009e26cef09 Mon Sep 17 00:00:00 2001 From: ClovertaTheTrilobita Date: Mon, 10 Nov 2025 15:22:20 +0200 Subject: [PATCH] =?UTF-8?q?feature(email):=20=E6=96=B0=E5=A2=9E=E8=87=AA?= =?UTF-8?q?=E5=BB=BA=E9=82=AE=E7=AE=B1=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/clover_email/send_email.py | 41 +++++++++++++++++++++++++++++++++- src/clover_jm/jm_comic.py | 2 +- 2 files changed, 41 insertions(+), 2 deletions(-) diff --git a/src/clover_email/send_email.py b/src/clover_email/send_email.py index 88564ba..07b5662 100644 --- a/src/clover_email/send_email.py +++ b/src/clover_email/send_email.py @@ -4,8 +4,9 @@ from email.mime.application import MIMEApplication from email.mime.text import MIMEText import aiosmtplib from nonebot import logger -from src.configs.api_config import google_smtp_server,google_email,google_password +from src.configs.api_config import google_smtp_server, google_email, google_password from src.configs.api_config import qq_smtp_server,qq_email,qq_password +from src.configs.api_config import server_smtp_server,server_email,server_password, server_port # 发送内容 html = """ @@ -189,3 +190,41 @@ async def send_email_by_qq(receiver_email: str, file_path: str): except Exception as e: logger.error(f"QQ邮件发送失败:{e}") return False + +async def send_email_by_server(receiver_email: str, file_path: str): + """发送单个文件附件邮件(自建服务器版)""" + msg = MIMEMultipart() + msg["From"] = server_email + msg["To"] = receiver_email + msg["Subject"] = "您的快递已送达" + msg.attach(MIMEText(html, "html", "utf-8")) + + try: + if not os.path.exists(file_path): + logger.error(f"文件不存在:{file_path}") + return False + + # 添加附件 + file_name = os.path.basename(file_path) + with open(file_path, "rb") as f: + attachment = MIMEApplication(f.read()) + attachment.add_header( + "Content-Disposition", + "attachment", + filename=file_name + ) + msg.attach(attachment) + + async with aiosmtplib.SMTP( + hostname=server_smtp_server, + port=server_port, + start_tls=True, + timeout=1200 + ) as server: + await server.login(server_email, server_password) + await server.send_message(msg) + print("自建服务器文件邮件发送成功!") + return True + except Exception as e: + logger.error(f"自建服务器邮件发送失败:{e}") + return False \ No newline at end of file diff --git a/src/clover_jm/jm_comic.py b/src/clover_jm/jm_comic.py index 305e11a..c37a702 100644 --- a/src/clover_jm/jm_comic.py +++ b/src/clover_jm/jm_comic.py @@ -8,7 +8,7 @@ from concurrent.futures import ThreadPoolExecutor from src.configs.path_config import jm_path,jm_config_path from src.clover_providers.cloud_file_api.kukufile import Kukufile from src.clover_image.delete_file import delete_folder,delete_file -from src.clover_email.send_email import send_email_by_google,send_email_by_qq +from src.clover_email.send_email import send_email_by_google, send_email_by_qq, send_email_by_server __name__ = "clover | jm_comic"