Python/HTML表单发送电子邮件
我对编程非常陌生,尤其是Python/Flask。 我试图有一个HTML表单提交到指定的电子邮件地址。 两天来,我一直在尝试一切,但都没有成功。 当我部署到heroku时,一切都很好,但是表单不起作用 这是我的脚本Python/HTML表单发送电子邮件,python,forms,flask,smtp,Python,Forms,Flask,Smtp,我对编程非常陌生,尤其是Python/Flask。 我试图有一个HTML表单提交到指定的电子邮件地址。 两天来,我一直在尝试一切,但都没有成功。 当我部署到heroku时,一切都很好,但是表单不起作用 这是我的脚本 from flask import Flask, render_template, request, flash from form import ContactForm from flask_mail import Mail, Message import smtplib from
from flask import Flask, render_template, request, flash
from form import ContactForm
from flask_mail import Mail, Message
import smtplib
from dotenv import load_dotenv #for python-dotenv method
load_dotenv()
import os
OWN_EMAIL = os.environ.get("OWN_EMAIL")
OWN_PASSWORD = os.environ.get("OWN_PASSWORD")
print(os.environ.get("OWN_EMAIL"))
print(os.environ.get("OWN_PASSWORD"))
app = Flask(__name__)
@app.route('/')
@app.route('/home', methods=["GET", "POST"])
def home():
if request.method == "POST":
data = request.form
data = request.form
send_email(data["name"], data["email"], data["subject"], data["message"])
return render_template("landing.html", msg_sent=True)
return render_template("landing.html", msg_sent=False)
def send_email(name, email, phone, message):
email_message = f"Subject:New Message\n\nName: {name}\nEmail: {email}\nSubject: {subject}\nMessage:{message}"
with smtplib.SMTP("smtp.zoho.eu") as connection:
connection.starttls()
connection.login(OWN_EMAIL, OWN_PASSWORD)
connection.sendmail(OWN_EMAIL, OWN_EMAIL, email_message)
if __name__=="__main__":
app.run(debug=True)
这是我的landing.html
<div class="col-lg-6">
<form action="{{ url_for('home') }}" name="sentMessage" method="post" class="contactForm" novalidate>
<div class="row">
<div id="sendmessage">Your message has been sent. Thank you!</div>
<div id="errormessage"></div>
<div class="col-lg-6">
<div class="form-group contact-block1">
<input type="text" name="name" class="form-control" id="name" placeholder="Your Name" data-rule="minlen:4" data-msg="Please enter at least 4 chars" />
<div class="validation"></div>
</div>
</div>
<div class="col-lg-6">
<div class="form-group">
<input type="email" class="form-control" name="email" id="email" placeholder="Your Email" data-rule="email" data-msg="Please enter a valid email" />
<div class="validation"></div>
</div>
</div>
<div class="col-lg-12">
<div class="form-group">
<input type="text" class="form-control" name="subject" id="subject" placeholder="Subject" data-rule="minlen:4" data-msg="Please enter at least 8 chars of subject" />
<div class="validation"></div>
</div>
</div>
<div class="col-lg-12">
<div class="form-group">
<textarea class="form-control" name="message" rows="8" data-rule="required" data-msg="Please write something for us" placeholder="Message"></textarea>
<div class="validation"></div>
</div>
</div>
<div class="col-lg-12">
<input type="submit" class="btn btn-defeault btn-send" value="Send message">
</div>
</div>
</form>
</div>
您的邮件已发送。非常感谢。
如果您有任何意见,我将不胜感激
谢谢从路线中删除第一项功能。应该是:
@app.route('/home')
def home():
if request.method == "POST":
data = request.form
data = request.form
send_email(data["name"], data["email"], data["subject"], data["message"])
return render_template("landing.html", msg_sent=True)
return render_template("landing.html", msg_sent=False)
同时更改此行:
<form action="{{ url_for('home') }}"
如果我删除home函数,我将无法呈现landing.html模板。在这两种情况下(发布和获取请求),它都将使用您当前的“联系人”函数如果我删除“home”函数,我会出现以下错误werkzeug.routing.BuildError:无法更新端点“home”代码的url,请检查againit呈现模板,但表单仍不工作,它不会将消息发送到指定的电子邮件帐户
<form action="/home"