def __send(self, to, msg): error_flag = True # -1 接收邮件地址或校验码填写非法 # 0 公共邮件发送成功 # 1 SMTP服务器连接失败 # 2 公共邮箱登陆失败 # 3 公共邮件发送失败 error_type = 0 logmsg = "准备发送邮件" sys_logger.info(logmsg) # 尝试连接服务器 try: # 根据SMTP服务器SSL状态连接 if self.smtp_ssl is True: smtp_server = smtplib.SMTP_SSL(self.smtp_host, self.smtp_port) else: smtp_server = smtplib.SMTP(self.smtp_host, self.smtp_port) # 打印日志 logmsg = "SMTP服务器连接成功" sys_logger.debug(logmsg) except Exception as A: logmsg = "SMTP服务器连接失败,失败信息:" + repr(A) error_flag = False error_type = 1 sys_logger.error(logmsg) else: try: smtp_server.login(self.send_address, self.send_password) logmsg = "公共邮件箱登陆成功" sys_logger.debug(logmsg) except Exception as B: logmsg = "公共邮件箱登陆失败,失败信息:" + repr(B) error_flag = False error_type = 2 sys_logger.error(logmsg) else: try: smtp_server.sendmail(self.send_address, to, msg.as_string()) smtp_server.quit() logmsg = "公共邮件发送成功" sys_logger.debug(logmsg) except Exception as C: logmsg = "公共邮件发送失败,失败信息:" + repr(C) error_flag = False error_type = 3 sys_logger.warn(logmsg) logmsg = "邮件发送结束" sys_logger.info(logmsg) return error_flag, error_type
# -*- coding: utf-8 -*- from automation import automation from handler.log import sys_logger from handler.config import appconfig from gevent import pywsgi from geventwebsocket.handler import WebSocketHandler if __name__ == '__main__': logmsg = "系统初始化|准备启动测试环境" sys_logger.info(logmsg) try: # 不能在生产环境中执行本文件 # automation.run(debug=False, host=appconfig.get("api", "host"), port=int(appconfig.get("api", "port"))) server = pywsgi.WSGIServer( (appconfig.get("api", "host"), int(appconfig.get("api", "port"))), automation, handler_class=WebSocketHandler ) print('服务已启动') server.serve_forever() except Exception as e: logmsg = "系统初始化|测试环境启动失败,失败原因:" + repr(e) sys_logger.error(logmsg) logmsg = "系统初始化|测试环境启动结束" sys_logger.info(logmsg)
# -*- coding: utf-8 -*- from redis import Redis, ConnectionPool from handler.config import database_config from handler.log import sys_logger msg = "准备初始化worker存储(redis)连接池" sys_logger.info(msg) try: pool = ConnectionPool( host=database_config.get("redis", "host"), port=int(database_config.get("redis", "port")), password=database_config.get("redis", "password") if database_config.get("redis", "password") else None, max_connections=int(database_config.get("redis", "max_connections")) ) redis_pool = Redis(connection_pool=pool) msg = "worker存储(redis)连接池初始化成功" sys_logger.info(msg) except Exception as e: msg = "worker存储(redis)连接池初始化失败,失败原因:" + repr(e) sys_logger.error(msg) raise RuntimeError(msg)
def sendmail_changemail_success(self, to): # 检查传参合法性 # to if type(to) is str: logmsg = "准备给" + to + "发送账户绑定邮箱修改成功邮件" sys_logger.info(logmsg) # 编辑邮件具体内容 mail_msg = """ <html> <head> <style type="text/css"> #platform_logo { height: 18px; } #platform_logo_left{ transition: all 0.5s; fill: #4DB6FF; } #platform_logo_center{ transition: all 0.5s; fill: #539D2C; } #platform_logo_right{ transition: all 0.5s; fill: #EDA833; } #platform_logo > path:hover{ transition: all 0.5s; fill: lightgrey; } </style> </head> <body style="margin:0;"> <div style="background-color: #f5f5f5;"> <div style="margin-left: 20px;padding-top: 10px; padding-bottom: 10px;font-size: 18px;font-weight: 600;"> Dear %s, </div> <div style="position: relative;margin-left: 20px;margin-right: 20px; font-size: 15px;background-color: white;border: 1px solid darkgrey;border-radius: 4px;"> <div style="margin-top: 15px;margin-left: 15px;padding-bottom: 10px;"> 您正在尝试修改绑定邮箱: <a href="%s">绑定邮箱修改成功</a> <div style="margin-left: 10px;padding-bottom: 10px;font-size: 16px;"></div> </div> </div> <div style="margin-top: 10px;padding-bottom: 10px; color: darkgrey;text-align: right;"> <div style="margin-right: 20px;font-size: 12px;"> 本条消息发送自%s测试平台 </div> </div> </div> </body> </html> """ % ( to.split("@")[0], appconfig.get("web", "http") + "://" + appconfig.get("web", "host") + ":" + appconfig.get("web", "port") + appconfig.get("web_url", "login"), appconfig.get('org', 'abbreviation'), ) # 装载消息 # 添加根MIME msg = MIMEText(mail_msg, 'html', 'utf-8') # 初始化邮件发送人 msg['From'] = Header(self.send_address, 'utf-8') # 初始化邮件接收人 msg['To'] = Header(to, 'utf-8') # 初始化邮件主题 msg['Subject'] = Header( '%s测试平台-账号注册' % appconfig.get('org', 'abbreviation'), 'utf-8' ) # 发送 result_flag, result_type = self.__send(to, msg) logmsg = "给" + to + "发送绑定邮箱修改成功邮件结束" sys_logger.info(logmsg) return result_flag, result_type else: logmsg = "接收邮件地址或校验码填写非法" sys_logger.error(logmsg) return False, -1
def sendmail_reset_password(self, user_id, to, code, operationid): # 检查传参合法性 # to if type(to) is str and type(code) is str: logmsg = "准备给" + to + "发送重置密码邮件" sys_logger.info(logmsg) # 编辑邮件具体内容 mail_msg = """ <html> <head> <style type="text/css"> #platform_logo { height: 18px; } #platform_logo_left{ transition: all 0.5s; fill: #4DB6FF; } #platform_logo_center{ transition: all 0.5s; fill: #539D2C; } #platform_logo_right{ transition: all 0.5s; fill: #EDA833; } #platform_logo > path:hover{ transition: all 0.5s; fill: lightgrey; } </style> </head> <body style="margin:0;"> <div style="background-color: #f5f5f5;"> <div style="margin-left: 20px;padding-top: 10px; padding-bottom: 10px;font-size: 18px;font-weight: 600;"> Dear %s, </div> <div style="position: relative;margin-left: 20px;margin-right: 20px; font-size: 15px;background-color: white;border: 1px solid darkgrey;border-radius: 4px;"> <div style="margin-top: 15px;margin-left: 15px;padding-bottom: 10px;"> 您正在尝试重置密码: <a href="%s?userId=%s&mail=%s&code=%s&operate=%s">点我打开重置密码页</a> <div style="margin-left: 10px;padding-bottom: 10px;font-size: 16px;"></div> </div> </div> <div style="margin-top: 10px;padding-bottom: 10px; color: darkgrey;text-align: right;"> <div style="margin-right: 20px;font-size: 12px;"> 本条消息发送自%s测试平台 </div> </div> </div> </body> </html> """ % ( to.split("@")[0], appconfig.get("web", "http") + "://" + appconfig.get("web", "host") + ":" + appconfig.get("web", "port") + appconfig.get("web_url", "resetPassword"), str(user_id), parse.quote(to), parse.quote(code), str(operationid), appconfig.get('org', 'abbreviation'), ) # 装载消息 # 添加根MIME msg = MIMEText(mail_msg, 'html', 'utf-8') # 初始化邮件发送人 msg['From'] = Header(self.send_address, 'utf-8') # 初始化邮件接收人 msg['To'] = Header(to, 'utf-8') # 初始化邮件主题 msg['Subject'] = Header( '%s测试平台-账号注册' % appconfig.get('org', 'abbreviation'), 'utf-8' ) # 发送 self.__send(to, msg) logmsg = "给" + to + "发送重置密码邮件结束" sys_logger.info(logmsg) return True else: logmsg = "接收邮件地址或校验码填写非法" sys_logger.error(logmsg) return False