对于我公司的项目,我必须发送包含嵌入式 URL 的电子邮件,系统会提示用户关注这些 URL。
例如,一个人在网站上注册,然后 Struts2 应用程序向该人发送一封电子邮件,其中有一个 URL 来确认订阅。
到目前为止,表单提交和发送电子邮件(从操作内部)工作得很好。我遇到的问题是我找不到生成要嵌入邮件正文的 URL 的方法。
我一定是以错误的方式做的,但我正在考虑类似以下内容:
public String send() throws Exception {
StringBuffer body = new StringBuffer();
HashMap<String, String> params = new HashMap<String, String>();
params.put("id", "xxxxxyyyyyaaaaa");
body.append("Veuillez vous rendre ici :");
body.append(UrlManager.getUrlForAction("action", params));
SendMail sendMail = new SendMail();
sendMail.send("me@me.fr", "Information", body.toString());
return SUCCESS;
}
那里会有一个UrlManager
(框架可以提供的东西)带有一个方法,该方法getUrlForAction()
获取一个动作及其参数作为输入,并输出一个包含相应 URL 的字符串(如http://mysite.mycompany.com/confirm?id=xxxxxyyyyyaaaaa
)。
有没有人对如何做到这一点有任何想法或指示?
编辑:
我尝试使用,但在调用UrlProvider
时出现空指针异常。determineActionUrl
也许我以错误的方式使用它。
HashMap<String,Object> params = new HashMap<String,Object>();
params.put("id", data.getMd5());
UrlProvider up = new ComponentUrlProvider(
new Component(ServletActionContext.getValueStack(ServletActionContext.getRequest())),
ServletActionContext.getRequest().getParameterMap());
downloadUrl = up.determineActionURL("confirm", "/", "GET",
ServletActionContext.getRequest(),
ServletActionContext.getResponse(),
params,
"http", true, true, true, true);