Struts 2 - Enviando email com URL incorporada
Para um projeto para minha empresa, tenho que enviar e-mails contendo URLs incorporados, que o usuário será solicitado a seguir.
Por exemplo, uma pessoa se registra no site e, em seguida, o aplicativo Struts2 envia um email para a pessoa em que há um URL para confirmar a assinatura.
Até agora, o envio do formulário e o envio do email (de dentro da ação) funcionam bem. O problema em que estou preso é que não consigo encontrar uma maneira de gerar o URL que gostaria de incorporar no corpo do email.
Eu devo estar fazendo do jeito errado, mas eu estava pensando em algo como o seguinte:
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;
}
onde haveria umUrlManager
(algo que poderia ser disponibilizado pelo framework) com um métodogetUrlForAction()
que obtém uma ação e seus parâmetros como entrada e que gera uma String contendo a URL correspondente (comohttp://mysite.mycompany.com/confirm?id=xxxxxyyyyyaaaaa
).
Alguém tem alguma idéia ou ponte sobre como fazer isso?
EDITAR:
Eu tentei usarUrlProvider
, mas eu recebo uma exceção de ponteiro nulo nodetermineActionUrl
ligar. Talvez eu esteja usando da maneira errada.
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);