繁体   English   中英

如何解决使用flask-mail发送电子邮件时的buildins.ConnectionRefusedError错误

[英]How do I resolve builtins.ConnectionRefusedError error in attempting to send email using flask-mail

我正在使用python中的Flask框架制作一个简单的WebApp。 它会从我的网站( www.anshulbansal.esy.es )接收用户输入的电子邮件和名称,并将检查数据库中是否存在电子邮件(现在数据库应视为字典),它将无法继续工作,但如果不能,在数据库中不存在,它将向发送的电子邮件发送随机链接,如果用户单击该链接,则其信息将添加到我的数据库中。

差不多完成了,但是这个错误以我的方式出现了。 查看以下代码:

from flask import Flask, render_template, request, redirect, url_for
from flask_mail import Mail, Message
import random
import string


def random_generator(size=6, chars=string.ascii_letters + string.digits):
    return ''.join(random.choice(chars) for x in range(size))


subscribers_d = {'anshul.bansal5@yahoo.com': 'Anshul Bansal', 'anshul.bansal3@yahoo.com': 'Bansal', 'anshul.bansal@yahoo.com': 'Anshul',}

app = Flask(__name__)
mail = Mail(app)

app.config.update(
    MAIL_SERVER='smtp.gmail.com',
    MAIL_PORT=465,
    MAIL_USE_TLS = False,
    MAIL_USE_SSL=True,
    MAIL_USERNAME='anshul.bansal950@gmail.com',
    MAIL_PASSWORD="It's Secret"
)


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


@app.route('/submit', methods=['POST'])
def submit():
    if request.method == "POST":
        v_name = request.form['vname']
        v_email = request.form['vemail']
        return send_mail(v_name, v_email)
    else:
        return redirect(url_for("/"))

random_link_sent = random_generator(20)


@app.route("/")
def send_mail(v_name, v_email):
    if v_email in subscribers_d:
        return "Oh! It seems that you have already registered."
    else:
        msg = Message('Confirm Subscription', sender=['anshul.bansal950@gmail.com'], recipients=[v_email])
        msg.html = "<h3>Confirm Subscription</h3>" \
           "<p>Hi! </p>" + v_name + "<p> , Please click on below link to subscribe</p>" \
            "Link: " + ' www.anshulbansal.esy.es/' + random_link_sent
        mail.send(msg)
        return 'Check Your Inbox For Confirmation Email'


@app.route("/<random_link_sent>")
def confirm(random_link_sent):
    return "You have registered on " + random_link_sent
    subscribers_d[v_email] = v_name


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

但是这段代码给了我一个builtins.ConnectionRefusedError错误。 但在2-3次发送电子邮件之前,尝试均已成功,没有任何错误。 我该如何解决?

这是错误的屏幕截图

您应该在初始化Mail之前更新配置:

app = Flask(__name__)

app.config.update(
    DEBUG = True,
    MAIL_SERVER = 'smtp.gmail.com',
    MAIL_PORT = 587,
    MAIL_USE_TLS = True,
    MAIL_USE_SSL = False,
    MAIL_USERNAME = 'your_username@gmail.com',
    MAIL_PASSWORD = 'your_password',
)

mail = Mail(app)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM