JFINAL邮件发送插件问题

JFINAL邮件发送插件提供了发送模板类邮件的功能,但是没有见到相关的demo演示。

我在尝试使用该api时,有报错产生,请问是什么原因?希望大神能帮忙看下,代码与报错如下:

image.png

image.png



评论区

JFinal

2020-10-10 16:47

估计你是新开了一个线程在调用这个 action

controller 中的 action 只有在被 jfinal 框架调用的时候在内部拥有正确的 request、response 对象

花开堪折Orz

2020-10-10 16:57

@JFinal 应该没有吧,我debug了一下;request和response 是从 MailPro.java中获取的:
public void send(String to, List cc, String subject, String viewPath, Map dataMap, List attachments) {
HttpServletResponse response = (HttpServletResponse) Proxy.newProxyInstance(
getClass().getClassLoader(), new Class[]{HttpServletResponse.class}, new MockHttpServletResponse());
HttpServletRequest request = (HttpServletRequest) Proxy.newProxyInstance(
getClass().getClassLoader(), new Class[]{HttpServletRequest.class}, new MockHttpServletRequest());
for (Map.Entry entry : dataMap.entrySet()) {
request.setAttribute(entry.getKey(), entry.getValue());
}
RenderManager.me().getRenderFactory().getRender(viewPath).setContext(request, response).render();
String text;
try {
text = response.getWriter().toString();
send(to, cc, subject, text, attachments);
} catch (IOException e) {
throw new MailSendException("邮件发送失败!",e);
}
}

而在这时,request和response的取值就已经是null了,responseweinull导致最终的报错

JFinal

2020-10-10 16:59

@花开堪折Orz 单步调试一下, request、response 都需要是正常的才可以

JFinal

2020-10-10 17:02

再回看了一下你的代码,注意下面的代码:
RenderManager.me().getRenderFactory().getRender(viewPath).setContext(request, response).render();

这个证明 render 已经完成了,所以,你应该去除你自己代码中的:
renderText(...)

一次交互只能 render 一次

花开堪折Orz

2020-10-10 17:16

@JFinal 我这个地方就不懂了,从下面这两个方法来看,
HttpServletResponse response = (HttpServletResponse) Proxy.newProxyInstance(
getClass().getClassLoader(), new Class[]{HttpServletResponse.class}, new MockHttpServletResponse());
HttpServletRequest request = (HttpServletRequest) Proxy.newProxyInstance(
getClass().getClassLoader(), new Class[]{HttpServletRequest.class}, new MockHttpServletRequest());
request的response值与我的传参都没有关系,是我那个地方理解有误吗?
对于我的工程,其实就是在“非 maven 方式开发”这个demo的基础上添加了jfinal-mail-plugin插件而已

花开堪折Orz

2020-10-10 17:22

@JFinal 我去除最后一句的renderText("Hello JFinal World.")后,依然报了相同的错误

花开堪折Orz

2020-10-10 17:29

@JFinal 对于发送简单的邮件是成功的,只是“发送模板类邮件”这个api报错,麻烦大佬了

JFinal

2020-10-10 18:09

@花开堪折Orz 我建议你只抽取 MailKit 中与 email 发送有关的代码自己用, 里面有一些封装,细节你可能不知道,容易出问题

这个 MailKit 不是 jfinal 官方推出的,我只能猜测这些信息给到你

花开堪折Orz

2020-10-12 08:32

好的,谢谢

steven_lhcb_9527

2020-12-15 17:18

能看下你的forgetPassword.html怎么写的吗?

热门反馈

扫码入社