使用 python 通过电子邮件发送多个 html 表单字段的数据 flask_mail msg.body= " "



当用户使用flask_mail在index.html中提交html表单时,我要做的是发送一封电子邮件。我想在邮件正文中发送多个表单字段。我该怎么做?我已经彻底研究了flask_mail文档,但没有找到答案。如果我尝试在msg.body="你好";但当我尝试发送表单数据时出错。

是的,我不想使用烧瓶模板。

首先,我使用";python-m烧瓶运行";然后我转到index.html来填写表格并提交。

index.html和app.py都在不同的文件夹中。

我还想从复选框、单选按钮、下拉列表和上传的文件中读取数据。那么,如何做到这一点,并使用flask_mail将所有值发送给管理员。

这是我在index.html中的表单。在操作参数中,我指定了下面的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/

这可以通过以下方式实现:

msg.body = 'Name is: {} n Email is: {} n and Phone is: {} n Amount:{} n Years:{}'.format(name,email,phone,amount,years)

最新更新