#!/usr/bin/env python3 # -*- coding: UTF-8 -*- import ssl from smtplib import SMTP from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from urllib.parse import parse_qs from html import escape CONFIG = { 'kujiu': { 'smtp_server': '', 'smtp_port': 587, 'smtp_user': '', 'smtp_pass': '', 'sender_email': '', 'receiver_email': '', 'redirect_to': '/pages/submit_success.html', }, 'nerv-project': { 'smtp_server': '', 'smtp_port': 587, 'smtp_user': '', 'smtp_pass': '', 'sender_email': '', 'receiver_email': '', 'redirect_to': '/pages/submit_success.html', } } def application(environ, start_fn): website = environ.get('SERVER_NAME', '') for ws in CONFIG: config = CONFIG[ws] if ws in website: break args = parse_qs(environ['QUERY_STRING']) name = escape(args.get('name', [''])[0]) name = name.replace('<', '').replace('>', '') email = escape(args.get('email', [''])[0]) email = email.replace('<', '').replace('>', '') subject = escape(args.get('subject', [''])[0]) body = escape(args.get('message', [''])[0]) message = MIMEMultipart() message["From"] = '%s/%s <%s>' % ( name, email, config['sender_email']) message["Reply-To"] = '%s <%s>' % (name, email) message["To"] = config['receiver_email'] message["Subject"] = "[WS " + website + "] " + subject message.attach(MIMEText(body, "plain")) context = ssl.create_default_context() server = SMTP(config['smtp_server'], config['smtp_port']) server.starttls(context=context) server.ehlo() server.login(config['smtp_user'], config['smtp_pass']) server.sendmail( config['sender_email'], config['receiver_email'], message.as_string() ) server.quit() start_fn( '303 See Other', [('Location', config['redirect_to'])] ) return ['1']