For a project for my company, I have to send emails containing embedded URLs, which the user will be prompted to follow.
For example, a person registers on the website, and then the Struts2 application sends an email to that person in which there is a URL to confirm the subscription.
So far, the form submission, and sending the email (from inside the action), work just fine. The problem on which I'm stuck is that I can't find a way to generate the URL I'd like to embed in the mail body.
I must be doing it the wrong way, but I was thinking about something like what follows:
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("[email protected]", "Information", body.toString());
return SUCCESS;
}
where there would be a UrlManager
(something that could be made available by the framework) with a method getUrlForAction()
that gets an action and its parameters as input and that outputs a String containing the corresponding URL (like http://mysite.mycompany.com/confirm?id=xxxxxyyyyyaaaaa
).
Does anyone have any ideas or pointers on how to do that?
EDIT:
I tried using UrlProvider
, but I get a null pointer exception on the determineActionUrl
call. Maybe I'm using it the wrong way.
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);
See Question&Answers more detail:
os