Flask 如果电子邮件未确认,如何重新发送信件?

Flask 如果电子邮件未确认,如何重新发送信件?,flask,Flask,我试图重新发送电子邮件给任何一个尚未确认他的帐户 型号.py class Subscribers(Base): id = db.Column(db.Integer, primary_key=True) email = db.Column(db.String(50)) confirmed = db.Column(db.Boolean(), default=False) def confirm(self, token): s = Serialize

我试图重新发送电子邮件给任何一个尚未确认他的帐户

型号.py

class Subscribers(Base):

    id = db.Column(db.Integer, primary_key=True)
    email = db.Column(db.String(50))
    confirmed = db.Column(db.Boolean(), default=False)

    def confirm(self, token):
        s = Serializer(app.config['SECRET_KEY'])
        try:
            data = s.loads(token)
        except:
            return False
        if data.get('confirm') != self.id:
            return False
        self.confirmed = True
        db.session.add(self)
        return True

    def generate_confirmation_token(self, expiration=3600):
        s = Serializer(app.config['SECRET_KEY'], expiration)
        return s.dumps({'confirm': self.id})

    def get_token(self, expiration=1800):
        s = Serializer(app.config['SECRET_KEY'], expiration)
        return s.dumps({'email': self.id}).decode('utf-8')

    @staticmethod
    def verify_token(token):
        s = Serializer(app.config['SECRET_KEY'])
        try:
            data = s.loads(token)
        except:
            return None
        id = data.get('email')
        if id:
            return User.query.get(id)
        return None
这是确认流程处理的功能:

@app.route('/send-confirmation/<email>/<token>')
def confirm(token,email):
    subre = Subscribers.query.filter_by(email=email).first()
    if subre.confirmed:
        flash('Э.почта уже подтверждена.')
        return redirect(url_for('index'))
    if subre.confirm(token):
        subre.confirmed = True
        db.session.add(subre)
        db.session.commit()
        send_email(subre.email, 'Благодарим Вас за подписку на наш сайт', 'auth/subscribe/thanks', subre=subre, token=token)
        flash('Вы подтвердили свою электронную почту, спасибо!')
    else:
        flash('Ссылка для подтверждения является недействительным или истек.')
    return redirect(url_for('index'))
这里我得到一个错误,上面写着:

AttributeError:'unicode'对象没有属性“生成确认令牌”

我试图在模型中添加
\uuuuuunicode\uuuuu
函数,但没有成功


请提供任何帮助。

您正在尝试调用电子邮件上的generate\u confirmation\u token方法,但您应该使用订阅者实例:

@app.before_request
def resend_confirmation():
    subscribers = Subscribers.query.filter_by(confirmed=False)
    for sub in subscribers:
        token = sub.generate_confirmation_token()
        send_email(sub.email, 'Подтверждение по электронной почте было отправлено Вам по электронной почте.',
            'auth/email/resend', email=email, token=token)
@app.before_request
def resend_confirmation():
    subscribers = Subscribers.query.filter_by(confirmed=False)
    for sub in subscribers:
        token = sub.generate_confirmation_token()
        send_email(sub.email, 'Подтверждение по электронной почте было отправлено Вам по электронной почте.',
            'auth/email/resend', email=email, token=token)