def add_data(): if request.method == 'POST': message = json.loads(request.get_data(as_text=True)) email_list = message['email'] token = message['token'] result = confirm_admin_token(token) # 没有每个人唯一的Key response = Response() response.headers['Content-Type'] = 'application/json' response.headers['Access-Control-Allow-Origin'] = '*' response.headers['Access-Control-Allow-Headers'] = '*' if request.method == 'OPTIONS': return response return_json = {'code': 1, 'message': '网络异常', 'data': None} response.data = return_msg(return_json) if result == False: return response for email in email_list: if check_email(email) == False: logger.info('invalid email %s' % email) continue try: insert_people(email, '') except KeyError: pass except Exception as e: logger.info(e) return_json = { 'code': 0, 'message': 'update emails successfully', 'data': None } response.data = return_msg(return_json) return response
def save_image(): if request.method == 'POST': # get the token from the header token = request.headers.get('token', '') result = confirm_admin_token(token) # 没有每个人唯一的Key response = Response() response.headers['Content-Type'] = 'application/json' response.headers['Access-Control-Allow-Origin'] = '*' response.headers['Access-Control-Allow-Headers'] = '*' if request.method == 'OPTIONS': return response return_json = {'code': 1, 'message': '网络异常', 'data': None} response.data = return_msg(return_json) # get the image file path image_file = request.files.get('template', False) # Todo: security check of image_path if result == False or image_file == False: return response # overwrite pic.jpg basedir = os.path.dirname(__file__) try: image_file.save(os.path.join(basedir, 'pic.jpg')) except Exception as e: logger.info(e) return_json = {'code': 0, 'message': 'upload successfully', 'data': None} response.data = return_msg(return_json) return response
def send_email(to_email, subject, content, attachment=None): email_json = get_email_config() # 链接邮箱服务器 yag = yagmail.SMTP(user=email_json["username"], password=email_json["password"], host=email_json["server_address"], port=email_json["smtp_port"], smtp_ssl=email_json["smtp_ssl"], smtp_starttls=email_json["smtp_ssl"] and email_json["skip_auth"], smtp_skip_login=email_json["skip_auth"]) # 邮箱正文 # contents = ['您好,附件中有您的证书'] logger.info("send to " + to_email + '; with subject: ' + subject) # 发送邮件 yag.send(to_email, subject, content, attachment)
def update_config(): if request.method == 'POST': message = json.loads(request.get_data(as_text=True)) token = message["token"] result = confirm_admin_token(token) # 没有每个人唯一的Key response = Response() response.headers['Content-Type'] = 'application/json' response.headers['Access-Control-Allow-Origin'] = '*' response.headers['Access-Control-Allow-Headers'] = '*' if request.method == 'OPTIONS': return response return_json = {'code': 1, 'message': '网络异常', 'data': None} response.data = return_msg(return_json) if result == False: return response try: referer = request.headers.get('Referer', None) if referer is not None: referer = referer.replace('admin', 'index') message['frontend_url'] = referer if message.get('username'): # email admin address message['server_address'] = get_smtp_url( message.get('username')) # email smtp address orgconfig = utils.get_org_config() emailconfig = utils.get_email_config() for domain in message: if domain == "token" or len(str(message[domain])) == 0: continue if domain in orgconfig: orgconfig[domain] = message[domain] elif domain in emailconfig: emailconfig[domain] = message[domain] utils.update_org_config(orgconfig) utils.update_email_config(emailconfig) except Exception as e: logger.info(e) return_json = { 'code': 0, 'message': 'update config successfully', 'data': None } response.data = return_msg(return_json) return response
def send_email(): response = Response() response.headers['Content-Type'] = 'application/json' response.headers['Access-Control-Allow-Origin'] = '*' response.headers['Access-Control-Allow-Headers'] = '*' if request.method == 'OPTIONS': return response elif request.method == 'POST': message = json.loads(request.get_data(as_text=True)) name = message.get('name') token = message.get('token', '') if name is None: return response_json(code=1, message='Name is required') result = confirm_token(token) if result is False: return response_json( code=2, message='Token is not available, plz check your latest email') email = result['email'] if is_token_unused(token): # 先确定下是不是志愿者列表中的token 并且是否注册过 没问题的话开始做图片 update_status(email, 2) update_name(email, name) try: wc.write_to_pic(name, email, token) return_json = { 'code': 0, 'message': 'You have submitted your information successful, the certificate is sent to you, please check your email', 'data': None } response.data = return_msg(return_json) return response except Exception as e: # 发送邮件或者创建图片错误 可能是邮件有问题 logger.info(e) return response_json(4, str(e)) else: return response_json( 3, 'You have submitted your information successful, please check your email' )
def insert_people(email, name, number='', token=None): db = TinyDB("data.json") People = Query() exist_list = db.search(People.email == email) if len(exist_list): logger.info('Duplicate entry for key email %s' % email) db.close() raise EmailDuplicateException() if token: logger.warning( 'It is not safe to specify the token value. ' 'Just let it be None and it will be generated automatically') else: token = gen_token(email) db.insert({ "name": name, "email": email, "token": token, "number": number, "status": 0 }) db.close()
def send_email(): if request.method == 'POST': message = json.loads(request.get_data(as_text=True)) name = message['name'] token = message['token'] result = confirm_token(token) # 没有每个人唯一的Key response = Response() response.headers['Content-Type'] = 'application/json' response.headers['Access-Control-Allow-Origin'] = '*' response.headers['Access-Control-Allow-Headers'] = '*' if request.method == 'OPTIONS': return response return_json = {'code': 1, 'message': '网络异常', 'data': None} response.data = return_msg(return_json) if result == False: return response email = result['email'] if is_token_unused(token): # 先确定下是不是志愿者列表中的token 并且是否注册过 没问题的话开始做图片 update_status(email, 2) update_name(email, name) try: wc.write_to_pic(name, email, token) return_json = { 'code': 0, 'message': 'You have submitted your information successful, the certificate is sent to you, please check your email', 'data': None } response.data = return_msg(return_json) return response except Exception as e: #发送邮件或者创建图片错误 可能是邮件有问题 logger.info(e) return response else: response.data = return_msg(return_json) return response # Key被用过了
def send_email(to_email, subject, content, attachment=None): email_json = get_email_config() # 链接邮箱服务器 yag = yagmail.SMTP(user=email_json["username"], password=email_json["password"], host=email_json["server_address"], port=email_json["smtp_port"], smtp_ssl=email_json["smtp_ssl"], smtp_starttls=email_json["smtp_ssl"] and email_json["skip_auth"], smtp_skip_login=email_json["skip_auth"]) # 邮箱正文 # contents = ['您好,附件中有您的证书'] logger.info("send to " + to_email, 'with subject', subject) # 发送邮件 try: yag.send(to_email, subject, content, attachment) except Exception as e: logger.info('send email to %s failed; Reason:' % to_email) logger.info(e) return False return True
def start(self): if self.finished(): self.job = threading.Thread(target=self.send_notice_email) logger.info('send email job started') self.job.start() self.is_finished = False