私の会社のプロジェクトでは、埋め込まれた URL を含む電子メールを送信する必要があり、ユーザーはそれに従うように求められます。
たとえば、ある人が Web サイトに登録すると、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;
}
アクションとそのパラメーターを入力として取得し、対応する URL を含む文字列を出力するUrlManager
メソッド (フレームワークによって利用可能になるもの) が存在します ( など)。getUrlForAction()
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);