2015-01-05 1 views
0

Я стараюсь следовать this tutorial. Когда я пытаюсь отправить форму контакта, которая должна вызывать электронное письмо, я получаю внутреннюю ошибку сервера. Журнал ошибок говорит:Как правильно настроить флеш-почту

RuntimeError: The curent application was not configured with Flask-Mail 

инструкции говорят, чтобы использовать from flask.ext.mail импортировать, но я видел, что это может быть from flask_mail в настоящее время. Я также попытался изменить почтовый порт с 465 до 587. Ни одна из этих изменений не устранила проблему. Самое до настоящего времени код:

from flask import Flask, render_template, request, flash 
from forms import ContactForm 
from flask_mail import Mail, Message 

mail = Mail() 

app = Flask(__name__) 

app.secret_key = 'development key' 

app.config["MAIL_SERVER"] = "smtp.gmail.com" 
app.config["MAIL_PORT"] = 587 
app.config["MAIL_USE_SSL"] = True 
app.config["MAIL_USERNAME"] = '[email protected]' ## CHANGE THIS 
app.config["MAIL_PASSWORD"] = 'password' 

mail.init_app(app) 

app = Flask(__name__) 
app.secret_key = 'Oh Wow This Is A Super Secret Development Key' 


@app.route('/') 
def home(): 
    return render_template('home.html') 

@app.route('/about') 
def about(): 
    return render_template('about.html') 

@app.route('/contact', methods=['GET', 'POST']) 
def contact(): 
    form = ContactForm() 

    if request.method == 'POST': 
    if form.validate() == False: 
     flash('All fields are required.') 
     return render_template('contact.html', form=form) 
    else: 
     msg = Message(form.subject.data, sender='[email protected]', recipients=['[email protected]']) 
     msg.body = """ 
     From: %s <%s> 
     %s 
     """ % (form.name.data, form.email.data, form.message.data) 
     mail.send(msg) 

     return render_template('contact.html', success=True) 

    elif request.method == 'GET': 
    return render_template('contact.html', form=form) 

if __name__ == '__main__': 
    app.run(debug=True) 

ответ

2

Вы создали второе приложение (предположительно случайно) после настройки начального приложения. Прямо сейчас «первый» app настроен и имеет расширение, но «второй» app используется для регистрации маршрутов и вызова .run().

Удалить строку после mail.init_app(app), вторую app = Flask(__name__), которая создает другое приложение.

+0

Я внес изменения. Спасибо, я полностью пропустил это. Затем я получил новую ошибку, которая, к сожалению, позволила мне потеряться в моем журнале. Я также получил предупреждение от gmail: «Учетная запись Google: попытка входа в систему заблокирована». Я включил настройку менее безопасных приложений. Я сейчас получаю новый Внутренняя ошибка сервера со следующим в моем журнале «SSLError: [Errno 1] _ssl.c: 510: ошибка: 140770FC: SSL процедуры: SSL23_GET_SERVER_HELLO: неизвестный протокол» Я попробовал оба порта и импортировать заявления с тем же результатом. – ExperimentsWithCode

+0

звучит хорошо. Я не был уверен в этой политике. Спасибо за помощь! – ExperimentsWithCode