I need to send an email to a user when they register on my website that
includes a link back to the website to confirm their email address. I want to
dynamically build the URL depending on the server it is deployed to.
I am trying to use a variable defined in components.xml:
<factory name="basePath"
value="#{facesContext.externalContext.request.scheme}://#{facesContext.externalContext.request.serverName}:#{facesContext.externalContext.request.serverPort}#{facesContext.externalContext.request.contextPath}/"/>
|
NOTE: This text is all one line in components.xml. The forum is wrapping the
text here for display purposes.
I have a SLSB that is invoking Renderer to send an email to the user:
| public String register()
| {
| List existing = em.createQuery("select u.username from User u where
u.username=#{user.username}")
| .getResultList();
|
| if ( existing.size()==0 )
| {
| // save the user
| user.setValidated(false);
| em.persist(user);
| log.info("Registered new user #{user.username}");
| FacesMessages.instance().add("An account has been created for
#{user.username}.");
|
| // setup a verification token
| Token verificationToken = new Token(user.getUsername());
| em.persist(verificationToken);
|
| // place the token hash into the session for use by email
verification
| Contexts.getSessionContext().set("outtoken",
verificationToken.getHash());
| log.info("Created a new Token for #{user.username}: #0",
verificationToken.getHash());
|
| // send an email verification
| try
| {
| renderer.render("/emailverification.xhtml");
| FacesMessages.instance().add("An email has been sent to
#{user.email}. Please follow the instructions sent to you via email to
complete the registration process.");
| }
| catch (Exception e)
| {
| log.error("Error sending mail", e);
| FacesMessages.instance().add("There was a problem sending your
verification email. Please try again later.");
| }
|
| return "success";
| }
| else
| {
| FacesMessages.instance().add("User #{user.username} already
exists");
| return null;
| }
| }
|
emailverification.xhtml
| <m:message xmlns="http://www.w3.org/1999/xhtml"
| xmlns:m="http://jboss.com/products/seam/mail"
| xmlns:s="http://jboss.com/products/seam/taglib"
| xmlns:ui="http://java.sun.com/jsf/facelets"
| xmlns:f="http://java.sun.com/jsf/core"
| xmlns:h="http://java.sun.com/jsf/html">
|
|
| <m:from name="Support" address="[EMAIL PROTECTED]" />
| <m:to name="#{user.name}">#{user.email}</m:to>
| <m:subject>Email Verification</m:subject>
| <m:body>
| <p><h:outputText value="Dear #{user.name}" />,</p>
| <p>Thank you for registering for a new account.
| In order to use your account,
| you must complete your registration by clicking on the link
below.</p>
| <p><a href="#{basepath}/validate.seam?tk=#{outtoken}">Click
here</a> to complete your registration.</p>
| <p>Regards,</p>
| <p>Glenn</p>
| </m:body>
| </m:message>
|
Here is a sample of the email that is generated:
| Dear Bob,
|
| Thank you for registering for a new account. In order to use your account,
| you must complete your registration by clicking on the link below.
|
| /validate.seam?tk=gnqerr
|
| Regards,
|
| Glenn
|
The raw email message shows that the href is not set correctly:
| From: Support <[EMAIL PROTECTED]>
| To: Bob <[EMAIL PROTECTED]>
| Subject: Email Verification
| Mime-Version: 1.0
| Content-Type: multipart/mixed;
boundary="----=_Part_28_7998763.1178031447360"
| Date: Tue, 1 May 2007 10:57:27 -0400 (EDT)
|
| ------=_Part_28_7998763.1178031447360
| Content-Type: text/html; charset=ISO-8859-1
| Content-Transfer-Encoding: 7bit
| Content-Disposition: inline
|
|
| <p>Dear Bob,</p>
| <p>Thank you for registering for a new account.
| In order to use your account,
| you must complete your registration by clicking on the link
below.</p>
| <p><a
href="/validate.seam?tk=gnqerr">/validate.seam?tk=gnqerr</a></p>
| <p>Regards,</p>
| <p>Glenn</p>
| ------=_Part_28_7998763.1178031447360--
|
The other variables #{user.name}, #{user.email}, #{outtoken} ) all get resolved
correctly. The #{basepath} does not.
1) Why doesn't #{basepath} resolve?
2) Is there a better way to dynamically build an href in an email message being
sent by Renderer?
Thanks,
Glenn
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4042116#4042116
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4042116
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user