qff.tools.email 源代码

# coding :utf-8
#
# The MIT License (MIT)
#
# Copyright (c) 2016-2019 XuHaiJiang/QFF
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.


import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
from qff.tools.config import get_config
from qff.tools.logs import log
from qff.frame.context import context
from qff.frame.const import RUN_TYPE


[文档]def send_message(message): """ 给用户自己发送消息提醒, 暂时只支持邮件通知. :param message: 消息内容. 字符串. :return: True/False, 表示是否发送成功. 当发送失败时, 会在日志中显示错误信息. * 此功能只能在 **实时运行模拟交易** 中使用, 回测中使用会直接忽略, 无任何提示; * 要使用模拟交易发送消息提醒功能, 必须在使用前正确设置邮箱配置参数; * 参数文件 ~/.qff/setting/config.ini 按以下格式配置参数: :: [EMAIL] from_email = your_email@example.com from_email_password = 授权密码 smtp_server = smtp.example.com smtp_port = 587 to_email = to_receive_email@example.com 其中授权密码可通过访问 https://www.jiuanweb.com/jz/show-165933770.html 获取生成方法。 """ if context.run_type != RUN_TYPE.SIM_TRADE: return False # 从配置文件中获取参数 from_email = get_config('EMAIL', 'from_email', 'your_email@example.com') from_email_password = get_config('EMAIL', 'from_email_password', 'your_email_password') smtp_server = get_config('EMAIL', 'smtp_server', 'smtp.qq.com') smtp_port = get_config('EMAIL', 'smtp_port', 465) to_email = get_config('EMAIL', 'to_email', 'to_receive_email@example.com') # 创建邮件消息 msg = MIMEText(message) msg['From'] = formataddr(('Sender Name', from_email)) msg['To'] = to_email msg['Subject'] = 'QFF邮件通知' # 连接SMTP服务器并发送邮件 try: server = smtplib.SMTP(smtp_server, int(smtp_port)) server.login(from_email, from_email_password) server.sendmail(from_email, to_email, msg.as_string()) server.quit() log.info("邮件消息发送成功!") return True except Exception as e: log.error(f"邮件发送失败!错误信息:{e}") return False