首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python/Email -如何通过send_email接收用户反馈?

Python/Email -如何通过send_email接收用户反馈?
EN

Stack Overflow用户
提问于 2015-10-06 17:18:26
回答 1查看 1.5K关注 0票数 2

所以我有一个表单在我的网络应用程序中,我试图收集来自用户的反馈。该表格包括一个主题,电子邮件,和内容,我希望电子邮件发送到我的帐户。我对此有很多的验证和理解上的困难。下面是我的代码,稍后我会进一步解释我的问题。

Settings.py

EMAIL_HOST_USEREMAIL_HOST_PASSWORD都在我的应用程序上。

代码语言:javascript
复制
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

Forms.py

代码语言:javascript
复制
class Contact(forms.Form):
    subject = forms.CharField(required=True)
    content = forms.CharField(widget=forms.Textarea)
    email = forms.EmailField(required=True)

Views.py

代码语言:javascript
复制
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说我应该设置双向验证。我该这么做吗?

有人能给我一些关于我该去哪里的想法吗?谢谢。

EN

回答 1

Stack Overflow用户

发布于 2016-11-19 17:06:39

首先,允许从您的gmail帐户访问应用程序,只要您将在尝试此代码时收到邮件,并且必须允许访问和不允许2步验证。使用以下代码:

forms.py

代码语言:javascript
复制
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

代码语言:javascript
复制
<!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

代码语言:javascript
复制
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()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32975823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档