首页
App
&
Coffee
文档
项目
分享
反馈
俱乐部
登录
注册
JFINAL邮件发送插件问题
花开堪折Orz
2020-10-10 16:32
JFINAL邮件发送插件提供了发送模板类邮件的功能,但是没有见到相关的demo演示。
我在尝试使用该api时,有报错产生,请问是什么原因?希望大神能帮忙看下,代码与报错如下:
项目:
jfinal-mail-plugin
评论区
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怎么写的吗?
回复
发送
我要反馈
热门反馈
扫码入社
controller 中的 action 只有在被 jfinal 框架调用的时候在内部拥有正确的 request、response 对象