所以我在我的网络应用程序上有一个表单,我试图收集用户的反馈。表单由主题,电子邮件和内容组成,我希望将电子邮件发送到我的帐户。我有很多验证和理解的麻烦。我的代码如下,之后我将进一步解释我的问题。
Settings.py
我的应用已填写 KushtrimPacaj
和EMAIL_HOST_USER
。
EMAIL_HOST_PASSWORD
Forms.py
EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend"
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = '#'
EMAIL_HOST_PASSWORD = '#'
EMAIL_USE_TLS = True
EMAIL_USE_SSL = False
Views.py
class Contact(forms.Form):
subject = forms.CharField(required=True)
content = forms.CharField(widget=forms.Textarea)
email = forms.EmailField(required=True)
所以我对如何从用户帐户向我的电子邮件发送有点困惑,因为我必须让用户登录,所以目前我正在尝试从我的电子邮件发送电子邮件帐户到我的帐户,我只是将用户电子邮件附加到内容。然而,这也不起作用。
其中一个是向我自己发送一个愚蠢的电子邮件吗?
此外,关于代码问题,我不断收到验证错误,谷歌说我应该设置双向验证。这是我应该做的吗?
有人能给我一些关于我应该去哪里的想法吗?感谢。
答案 0 :(得分:0)
首先,允许从您提供的Gmail帐户访问应用 you will get the mail when you will try this code and you have to allow access and don't allow 2-step verification 使用下面给出的代码:
<强> forms.py 强>
from flask_wtf import Form
from wtforms import StringField, TextAreaField, SubmitField, validators
class ContactForm(Form):
name = StringField('Your Name:', [validators.DataRequired()])
email = StringField('Your e-mail address:', [validators.DataRequired(), validators.Email('your@email.com')])
message = TextAreaField('Your message:', [validators.DataRequired()])
submit = SubmitField('Send Message')
<强> contact.html 强>
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>Contact</title>
</head>
<body>
<h1>Contact Form:</h1>
<form action="/contact" method="post">
{{ form.hidden_tag() }}
<p>
{{ form.name.label }}
{{ form.name }}
</p>
<p>
{{ form.email.label }}
{{ form.email }}
</p>
<p>
{{ form.message.label }}
{{ form.message }}
</p>
<p>
{{ form.submit }}
</p>
</form>
</body>
</html>
<强> main.py 强>
from flask import Flask, render_template, request
from flask_mail import Mail, Message
from forms import ContactForm
app = Flask(__name__)
app.secret_key = 'YourSuperSecreteKey'
# add mail server config
app.config['MAIL_SERVER'] = 'smtp.gmail.com'
app.config['MAIL_PORT'] = 465
app.config['MAIL_USE_SSL'] = True
app.config['MAIL_USERNAME'] = 'YourUser@NameHere'
app.config['MAIL_PASSWORD'] = 'yourMailPassword'
mail = Mail(app)
@app.route('/contact', methods=('GET', 'POST'))
def contact():
form = ContactForm()
if request.method == 'POST':
if form.validate() == False:
return 'Please fill in all fields <p><a href="/contact">Try Again!!! </a></p>'
else:
msg = Message("Message from your visitor" + form.name.data,
sender='YourUser@NameHere',
recipients=['yourRecieve@mail.com', 'someOther@mail.com'])
msg.body = """
From: %s <%s>,
%s
""" % (form.name.data, form.email.data, form.message.data)
mail.send(msg)
return "Successfully sent message!"
elif request.method == 'GET':
return render_template('contact.html', form=form)
if __name__ == '__main__':
app.run()