Struts 2 - отправка почты со встроенным URL

Для проекта для моей компании я должен отправить электронные письма, содержащие встроенные URL-адреса, за которыми пользователю будет предложено следовать.

Например, человек регистрируется на веб-сайте, а затем приложение Struts2 отправляет электронное письмо этому человеку, в котором есть URL-адрес для подтверждения подписки.

Пока что отправка формы и отправка электронного письма (изнутри действия) работают нормально. Проблема, по которой я покупалЯ застрял в том, что я могуне могу найти способ создать URL, который яЯ хотел бы вставить в тело письма.

Должно быть, я делаю это неправильно, но я думал о чем-то вроде следующего:

public String send() throws Exception {
    StringBuffer body = new StringBuffer();

    HashMap params = new HashMap();
    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;
}

где будетUrlManager (что-то, что может быть сделано доступным фреймворком) с помощью методаgetUrlForAction() который получает действие и его параметры в качестве входных данных и выводит строку, содержащую соответствующий URL (например,http://mysite.mycompany.com/confirm?id=xxxxxyyyyyaaaaa).

У кого-нибудь есть идеи или указания, как это сделать?

РЕДАКТИРОВАТЬ:

Я пытался с помощьюUrlProvider, но я получаю исключение нулевого указателя наdetermineActionUrl вызов. Может я'Я использую это неправильно.

HashMap params = new HashMap();
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);

Ответы на вопрос(2)

Ваш ответ на вопрос