2014-04-06 60 views
0

我想知道這是否是最好的方法,但Flask-Mail擴展接受一些SMTP服務器配置,並在需要發送電子郵件時調用Mail類的send功能。猴子修補燒瓶郵件發送功能

我正在使用一個SMTP提供程序,並寫了我自己的發送函數,它利用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) 

然而,Mail類的現有send功能仍然被調用。

任何想法?

回答

2

關於你的第一句話

我想知道如果這是再好的辦法

你爲什麼不只是繼承原有Mail類,並重新定義.send

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