所以我有一个表单在我的网络应用程序中,我试图收集来自用户的反馈。该表格包括一个主题,电子邮件,和内容,我希望电子邮件发送到我的帐户。我对此有很多的验证和理解上的困难。下面是我的代码,稍后我会进一步解释我的问题。
Settings.py
EMAIL_HOST_USER和EMAIL_HOST_PASSWORD都在我的应用程序上。
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 = FalseForms.py
class Contact(forms.Form):
subject = forms.CharField(required=True)
content = forms.CharField(widget=forms.Textarea)
email = forms.EmailField(required=True)Views.py
def about(request):
if request.method == 'GET':
form = Contact()
else:
form = Contact(request.POST)
if form.is_valid():
subject = form.cleaned_data['subject']
content = form.cleaned_data['content']
email = ['contacttexchange@gmail.com']
#try:
server = smtplib.SMTP('smtp.gmail.com:587')
server.starttls()
server.login(settings.EMAIL_HOST_USER, settings.EMAIL_HOST_PASSWORD)
server.sendmail(email, email, content)
server.quit()
print "Successfully sent email"
#except SMTPException:
print "Error: unable to send email"所以我有点困惑如何从一个用户帐户发送电子邮件到我的帐户,因为我必须让用户登录,所以目前我正在尝试从我的帐户发送一封电子邮件到我的帐户,我只是打算把用户的电子邮件附加到内容中。然而,这也不起作用。
第一,给自己发电子邮件是一种愚蠢的做法吗?
另外,关于代码问题,我一直得到验证错误,google说我应该设置双向验证。我该这么做吗?
有人能给我一些关于我该去哪里的想法吗?谢谢。
发布于 2016-11-19 17:06:39
首先,允许从您的gmail帐户访问应用程序,只要您将在尝试此代码时收到邮件,并且必须允许访问和不允许2步验证。使用以下代码:
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()https://stackoverflow.com/questions/32975823
复制相似问题