0
有没有办法阻止对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 <[email protected]>");
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);
}
}
太糟糕了。现在我会接受你的答案,并将日志记录代码复制粘贴到所有邮件方法......希望在未来的某个时候这将改变。 – ripper234
我认为这是一种解决方法,只需使用Mails类中定义的静态方法包装Mailer.send(...)调用即可。将你想拦截的逻辑放入该方法中,然后调用该方法而不是Mailer.send。这应该是一个简单的方法来做你想做的事情 –