猴子修补Flask-mail的发送功能

时间:2014-04-06 17:37:36

标签: python flask monkeypatching flask-mail

我想知道这是否是最好的方法,但Flask-Mail扩展程序接受一些SMTP服务器配置,并随时调用send类的Mail函数将被发送。

我正在使用SMTP提供程序,并编写了我自己的send函数,它利用了Flask-Mail扩展的Message对象,现在我想修补邮件对象以使用这个自定义函数。

我尝试过以下方法:

from flask_mail import Mail
#override the send email to use 
#the elastic email
Mail.send = _custom_send
app = Flask(__name__)
mail = Mail()
mail.init_app(app)

app = Flask(__name__)
mail = Mail()
mail.send = types.MethodType(_custom_send, mail)
mail.init_app(app)

但是,仍然会调用send类的现有Mail函数。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

关于你的第一句话

  

我想知道这是否是最好的方法

为什么不将原始的Mail类继承为子类并重新定义.send

class MyMail(Mail):
    def send(self, ...):
      ....