streamlit-test / app.py
LightTai's picture
Update app.py
c895483
import streamlit as st
import smtplib
from email.mime.text import MIMEText
# 添加标题
st.title('User Study')
# 添加问题和选项
question_1 = st.text_input('question 1:')
option_1_1 = st.checkbox('option 1', key='question_1_option_1')
option_1_2 = st.checkbox('option 2', key='question_1_option_2')
question_2 = st.text_input('question 2:')
option_2_1 = st.checkbox('option 1', key='question_2_option_1')
option_2_2 = st.checkbox('option 2', key='question_2_option_2')
# 显示提交按钮
submit_button = st.button('submit')
# 创建一个字典来存储用户答案
user_answers = {}
def send_email(user_data):
# 邮件配置
sender_email = 'BachelorThesisT@outlook.com'
receiver_email = 'taijunzhe@gmail.com'
subject = '用户数据'
message = format_user_data(user_data)
# 创建 MIMEText 对象
msg = MIMEText(message)
msg['Subject'] = subject
msg['From'] = sender_email
msg['To'] = receiver_email
# 发送邮件
try:
with smtplib.SMTP('smtp.office365.com', 587) as smtp:
smtp.starttls()
smtp.login('BachelorThesisT@outlook.com', '1111122222t')
smtp.send_message(msg)
print('邮件发送成功')
except smtplib.SMTPException as e:
print('邮件发送失败:', str(e))
def format_user_data(user_data):
# 格式化用户数据为邮件内容
formatted_data = ''
for key, value in user_data.items():
formatted_data += f'{key}: {value}\n'
return formatted_data
# 处理提交按钮的点击事件
if submit_button:
# 存储用户的答案
user_answers['question 1'] = {
'option 1': option_1_1,
'option 2': option_1_2
}
user_answers['question 2'] = {
'option 1': option_2_1,
'option 2': option_2_2
}
# 打印用户的答案
st.write('提交的答案是:')
for question, options in user_answers.items():
st.write(question)
for option, value in options.items():
if value:
st.write(f'- {option}')
# 模拟用户数据
user_data = user_answers
# 发送邮件
send_email(user_data)
# 显示感谢信息或其他处理
st.write('谢谢参与调查!')