python - 使用 python flask_mail msg.body="" 通过电子邮件发送多个 html 表单字段的数据
问题描述
我想做的是当用户使用flask_mail在index.html中提交html表单时发送一封电子邮件。我想在 msg 正文中发送多个表单字段。我怎么做?我已经彻底研究了 flask_mail 文档,但没有找到答案。如果我尝试在 msg.body="hello" 中发送简单的 msg 没有错误,但在我尝试发送表单数据时会出错。
是的,我不想使用烧瓶模板。
首先,我使用“python -m flask run”执行 app.py,然后转到 index.html 填写表单并提交。
index.html 和 app.py 都在不同的文件夹中。
我还想从复选框、单选按钮、下拉列表和上传的文件中读取数据。那么如何做到这一点并使用flask_mail将所有这些值发送给管理员。
这是我在 index.html 中的表格。在 action 参数中,我指定了以下 url。
<form class="" action=" http://127.0.0.1:5000/" id="get-quote" name="get-quote" method="post">
<fieldset>
<!-- Text input-->
<div class="row">
<div class="col-xl-4 col-lg-4 col-md-12 col-sm-12 col-12">
<div class=" form-group ">
<label class="control-label" for="name">Name</label>
<input id="name" name="name" type="text" placeholder="Name" class="form-control input-md" required>
<span class="help-block"> </span>
</div>
</div>
<!-- Text input-->
<div class="col-xl-4 col-lg-4 col-md-12 col-sm-12 col-12">
<div class="form-group ">
<label class=" control-label" for="email">E-Mail</label>
<input id="email" name="email" type="text" placeholder="E-mail" class="form-control input-md">
</div>
</div>
<!-- Text input-->
<div class="col-xl-4 col-lg-4 col-md-12 col-sm-12 col-12">
<div class="form-group ">
<label class="control-label" for="phone">Phone</label>
<input id="phone" name="phone" type="text" placeholder="Phone" class="form-control">
</div>
</div>
<div class="col-xl-6 col-lg-6 col-md-12 col-sm-12 col-12">
<div class="form-group slide-ranger ">
<label for="amount" class="control-label">Loan Amount</label>
<input type="text" id="amount" name="amount"placeholder="Enter your amount" class="form-control">
</div>
</div>
<div class="col-xl-6 col-lg-6 col-md-12 col-sm-12 col-12">
<div class="form-group slide-ranger ">
<label for="years" class="control-label">Year</label>
<input type="text" id="years" name="years" placeholder="Enter number of years(eg:1,2,3)" class="form-control">
</div>
</div>
<!-- Button -->
<div class="col-xl-4 col-lg-4 col-md-12 col-sm-12 col-12">
<button id="Submit" name="Submit" class="btn btn-primary btn-block">Submit New Quote</button>
</div>
</div>
</fieldset>
</form>
这是我在 flask_mail 中的 app.py
from flask import Flask
from flask_mail import Mail, Message
from flask import request, redirect
app =Flask(__name__)
mail=Mail(app)
app.config['MAIL_SERVER']='smtp.gmail.com'
app.config['MAIL_PORT'] = 465
app.config['MAIL_USERNAME'] = 'mymail@gmail.com'
app.config['MAIL_PASSWORD'] = 'my_password'
app.config['MAIL_USE_TLS'] = False
app.config['MAIL_USE_SSL'] = True
mail = Mail(app)
@app.route('/', methods = ['POST'])
def index():
name = request.form['name']
email = request.form['email']
phone = request.form['phone']
amount = request.form['amount']
years = request.form['years']
msg = Message('Get-Quote Form', sender = 'mymail@gmail.com', recipients = ['mymail@gmail.com'])
msg.body = "I want all the above field here to send mail."
mail.send(msg)
return "Sent"
if __name__ == '__main__':
app.run(debug = True)
解决方案
所以你正在访问你的索引页面,表格在哪里?如果是这样,您将需要将方法更改为['POST', 'GET']
,如果请求是 POST 或 GET,还需要进行 if 语句。检查 WTForms 文档以供参考:https ://flask.palletsprojects.com/en/1.1.x/patterns/wtforms/
推荐阅读
- java - 如何使用 selenium webdriver 在 Safari 中处理地理位置弹出窗口?
- powershell - 通过 Powershell 在线打开 Sharepoint 上的文件并将数据附加到该文件并将其保存回 sharepoint
- memory-leaks - 添加到UIWindow后如何销毁VC?
- python - Pygame 和键盘模块组合,True 循环突然中断
- javascript - 卸载本地软件包时可能导致持续错误的原因是什么?
- mongodb - 找出运行给定 MongoDB 命令所需的权限
- verilog - 如何实现溢出代码?我不知道怎么了
- angular - 自 Angular 8 更新以来,无法导入 Angular 材质的特定入口点
- postgresql - 如何授予对整个数据库的选择权限?(不是模式)
- reactjs - React,如何告诉一个父组件所有子组件都完成了更新?