有没有办法拦截对Play Mailer class的调用?
我想记录我的应用程序发送的所有电子邮件。我想访问邮件程序方法参数和方法名称,并记录所有这些。
我尝试过使用@With,但我的@Before方法没有被调用:
@With(EmailInterceptor.class)
public class Mails extends Mailer {
public static void welcome(User user) {
setSubject("Welcome to my app");
setFrom("Me <me@domain.com>");
addRecipient(user.email);
Mailer.send(user);
}
}
public final class EmailInterceptor extends UserAwareControllerBase {
private final static Logger logger = LoggerHelper.getLogger();
@Before
public void logEmail(){
String email = getUser() == null ? "<null>" : getUser().email;
logger.info("Sending email to " + email);
}
}
答案 0 :(得分:2)
AFAIK没有梅勒的拦截。检查https://github.com/playframework/play/blob/master/framework/src/play/mvc/ActionInvoker.java。转到第142行,清楚地表明只有控制器会获得拦截。