Seam Email to Multi-recipients.
fpsdyl Dec 30, 2008 3:39 PMHi Guys,
I am having problems with sending an email to multiple users. Here is my Email Action :
`
@Stateful
@Name("emailNotifier")
@Scope(ScopeType.EVENT)
public class EmailNotifierAction implements EmailNotifier{
@Logger Log log;
@In(create=true)
private Renderer renderer;
UserDAO udao = null;
@PersistenceContext(type=PersistenceContextType.EXTENDED)
EntityManager em;
public void send(){
renderer.render("/statsEmailReport.xhtml");
}
@Remove
public void destroy() {
}
public void makeAndSendJavaConStatsToAll() {
log.info("makeAndSendJavaConStatsToAll()");
renderer.render("/statsEmailReport.xhtml");
}
public List<User_E> getEmailUsers(){
List<User_E> emailUsers=new ArrayList<User_E>();
log.info("make email users!");
udao = new UserDAO(em);
List<User_E> allUsers = udao.fetchUserList();
for(User_E user : allUsers){
if (user.getNotifyStats() == Boolean.TRUE){
log.info(new StringBuffer().append(user.getFullname()).append(" -> wants this email! -->").append(user.getEmail()).toString());
emailUsers.add(user);
}
else{
log.info(new StringBuffer().append(user.getFullname()).append(" -> doesn't wants this email!").toString());
}
}
return emailUsers;
}
}
`
Here is the message that is supposed to be sent :
<m:message xmlns="http://www.w3.org/1999/xhtml"
xmlns:m="http://jboss.com/products/seam/mail"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets">
<m:from name="NGNDemography" address="ngnDemography@noreply.com" />
<ui:repeat value="#{emailNotifier.getEmailUsers()}" var="user">`
<m:to name="#{user.getFullname()}" address="#{user.getEmail()}" />
</ui:repeat>
<m:subject>Seam Email</m:subject>
<m:body>
<p><h:outputText value="Dear Guy" /></p>
<p>You can try out Seam by visiting<a href="http://labs.jboss.com/jbossseam">http://labs.jboss.com/jbossseam</a>.</p>
<p>Regards,</p>
<p>Super Dylan</p>
</m:body>
</m:message>
So basically to send the email I have this on a seperate page :
<h:commandLink value="send test mail" action="#{emailNotifier.makeAndSendJavaConStatsToAll()}"/>
My smtp host is setup correctly:
This is the stacktrace that I get :
`
Caused by: java.lang.NullPointerException
at javax.mail.internet.InternetAddress.checkAddress(InternetAddress.java:873)
at javax.mail.internet.InternetAddress.validate(InternetAddress.java:856)
at org.jboss.seam.mail.ui.AddressComponent.getInternetAddress(AddressComponent.java:39)
at org.jboss.seam.mail.ui.RecipientAddressComponent.encodeBegin(RecipientAddressComponent.java:25)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:934)
at com.sun.facelets.component.RepeatRenderer.encodeChildren(RepeatRenderer.java:50)
at com.sun.facelets.component.UIRepeat.process(UIRepeat.java:357)
at com.sun.facelets.component.UIRepeat.encodeChildren(UIRepeat.java:617)
at org.jboss.seam.ui.util.JSF.renderChild(JSF.java:175)
at org.jboss.seam.ui.util.JSF.renderChildren(JSF.java:163)
at org.jboss.seam.mail.ui.UIMessage.encodeChildren(UIMessage.java:192)
at org.jboss.seam.ui.util.JSF.renderChild(JSF.java:175)
at org.jboss.seam.ui.util.JSF.renderChildren(JSF.java:163)
at org.jboss.seam.ui.facelet.RendererRequest.renderFacelet(RendererRequest.java:103)
at org.jboss.seam.ui.facelet.RendererRequest.run(RendererRequest.java:73)
at org.jboss.seam.ui.facelet.FaceletsRenderer.render(FaceletsRenderer.java:43)
at za.co.ngn.central.session.stats.EmailNotifierAction.makeAndSendJavaConStatsToAll(EmailNotifierAction.java:52)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:112)
at org.jboss.ejb3.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:166)
at org.jboss.seam.intercept.EJBInvocationContext.proceed(EJBInvocationContext.java:44)
at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:56)
at org.jboss.seam.transaction.RollbackInterceptor.aroundInvoke(RollbackInterceptor.java:28)
at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
at org.jboss.seam.core.BijectionInterceptor.aroundInvoke(BijectionInterceptor.java:77)
at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
at org.jboss.seam.core.MethodContextInterceptor.aroundInvoke(MethodContextInterceptor.java:44)
at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
at org.jboss.seam.persistence.EntityManagerProxyInterceptor.aroundInvoke(EntityManagerProxyInterceptor.java:29)
at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
at org.jboss.seam.persistence.HibernateSessionProxyInterceptor.aroundInvoke(HibernateSessionProxyInterceptor.java:31)
`
Please do you have any help for me?
Thank you in advance!
I am having problems with sending an email to multiple users. Here is my Email Action :
`
@Stateful
@Name("emailNotifier")
@Scope(ScopeType.EVENT)
public class EmailNotifierAction implements EmailNotifier{
@Logger Log log;
@In(create=true)
private Renderer renderer;
UserDAO udao = null;
@PersistenceContext(type=PersistenceContextType.EXTENDED)
EntityManager em;
public void send(){
renderer.render("/statsEmailReport.xhtml");
}
@Remove
public void destroy() {
}
public void makeAndSendJavaConStatsToAll() {
log.info("makeAndSendJavaConStatsToAll()");
renderer.render("/statsEmailReport.xhtml");
}
public List<User_E> getEmailUsers(){
List<User_E> emailUsers=new ArrayList<User_E>();
log.info("make email users!");
udao = new UserDAO(em);
List<User_E> allUsers = udao.fetchUserList();
for(User_E user : allUsers){
if (user.getNotifyStats() == Boolean.TRUE){
log.info(new StringBuffer().append(user.getFullname()).append(" -> wants this email! -->").append(user.getEmail()).toString());
emailUsers.add(user);
}
else{
log.info(new StringBuffer().append(user.getFullname()).append(" -> doesn't wants this email!").toString());
}
}
return emailUsers;
}
}
`
Here is the message that is supposed to be sent :
<m:message xmlns="http://www.w3.org/1999/xhtml"
xmlns:m="http://jboss.com/products/seam/mail"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets">
<m:from name="NGNDemography" address="ngnDemography@noreply.com" />
<ui:repeat value="#{emailNotifier.getEmailUsers()}" var="user">`
<m:to name="#{user.getFullname()}" address="#{user.getEmail()}" />
</ui:repeat>
<m:subject>Seam Email</m:subject>
<m:body>
<p><h:outputText value="Dear Guy" /></p>
<p>You can try out Seam by visiting<a href="http://labs.jboss.com/jbossseam">http://labs.jboss.com/jbossseam</a>.</p>
<p>Regards,</p>
<p>Super Dylan</p>
</m:body>
</m:message>
So basically to send the email I have this on a seperate page :
<h:commandLink value="send test mail" action="#{emailNotifier.makeAndSendJavaConStatsToAll()}"/>
My smtp host is setup correctly:
This is the stacktrace that I get :
`
Caused by: java.lang.NullPointerException
at javax.mail.internet.InternetAddress.checkAddress(InternetAddress.java:873)
at javax.mail.internet.InternetAddress.validate(InternetAddress.java:856)
at org.jboss.seam.mail.ui.AddressComponent.getInternetAddress(AddressComponent.java:39)
at org.jboss.seam.mail.ui.RecipientAddressComponent.encodeBegin(RecipientAddressComponent.java:25)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:934)
at com.sun.facelets.component.RepeatRenderer.encodeChildren(RepeatRenderer.java:50)
at com.sun.facelets.component.UIRepeat.process(UIRepeat.java:357)
at com.sun.facelets.component.UIRepeat.encodeChildren(UIRepeat.java:617)
at org.jboss.seam.ui.util.JSF.renderChild(JSF.java:175)
at org.jboss.seam.ui.util.JSF.renderChildren(JSF.java:163)
at org.jboss.seam.mail.ui.UIMessage.encodeChildren(UIMessage.java:192)
at org.jboss.seam.ui.util.JSF.renderChild(JSF.java:175)
at org.jboss.seam.ui.util.JSF.renderChildren(JSF.java:163)
at org.jboss.seam.ui.facelet.RendererRequest.renderFacelet(RendererRequest.java:103)
at org.jboss.seam.ui.facelet.RendererRequest.run(RendererRequest.java:73)
at org.jboss.seam.ui.facelet.FaceletsRenderer.render(FaceletsRenderer.java:43)
at za.co.ngn.central.session.stats.EmailNotifierAction.makeAndSendJavaConStatsToAll(EmailNotifierAction.java:52)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:112)
at org.jboss.ejb3.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:166)
at org.jboss.seam.intercept.EJBInvocationContext.proceed(EJBInvocationContext.java:44)
at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:56)
at org.jboss.seam.transaction.RollbackInterceptor.aroundInvoke(RollbackInterceptor.java:28)
at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
at org.jboss.seam.core.BijectionInterceptor.aroundInvoke(BijectionInterceptor.java:77)
at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
at org.jboss.seam.core.MethodContextInterceptor.aroundInvoke(MethodContextInterceptor.java:44)
at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
at org.jboss.seam.persistence.EntityManagerProxyInterceptor.aroundInvoke(EntityManagerProxyInterceptor.java:29)
at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
at org.jboss.seam.persistence.HibernateSessionProxyInterceptor.aroundInvoke(HibernateSessionProxyInterceptor.java:31)
`
Please do you have any help for me?
Thank you in advance!