Re: Sending mail from a bean..
in message <1162899420.571171.148660@i42g2000cwa.googlegroups.com>,
gbattine ('gbattine@alice.it') wrote:
i need your help.
I've a jsf application a page in which user can clicks on a button
"Password lost?".
I want the bean called by this botton sends an email to user showing
password from its database.
How can i do it?
I use jsf 1.1.0.1 e servlet 2.3
Can someone post me some working code?
I've read on internet but i'm bit confused,so simple code can helps me.
package uk.co.weft.pres.server;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import uk.co.weft.alert.Alert;
import uk.co.weft.alert.AlertingException;
import uk.co.weft.dbutil.Context;
import uk.co.weft.dbutil.Contexts;
import uk.co.weft.dbutil.DataFormatException;
import uk.co.weft.dbutil.DataStoreException;
import uk.co.weft.dbutil.TableDescriptor;
import uk.co.weft.htform.Form;
import uk.co.weft.htform.InitialisationException;
import uk.co.weft.htform.TableWrapperForm;
/**
* An table wrapper form which is capable of mailing a password to the
* address registered to it
*/
public abstract class AbstractMailPass extends TableWrapperForm
{
//~ Instance fields -----------------------------------------------
/** our postman */
protected Alert pat;
/** the subject for emails */
protected String mailSubject =
"Your password on the Press Release Server";
//~ Methods -------------------------------------------------------
/**
* specialisation: add a MailPassWidget to my authentificationWidgetSet
*/
public void init( Context config ) throws InitialisationException
{
super.init( config );
config.put( Alert.MAILTEMPLATETOKEN,
config.get( "mail_pass_template_url" ) );
try
{
pat = new Alert( config );
}
catch ( AlertingException e )
{
throw new InitialisationException( "Could not create alert agent",
e );
}
String v = config.getValueAsString( Alert.MAILSUBJECTTOKEN );
if ( v != null )
{
mailSubject = v;
}
}
/**
* mail to the user the password corresponding to the email address
* in the context
*
* @param context the context
*
* @return true if mail was despatched
*/
protected boolean mailPass( Context context ) throws DataStoreException
{
boolean result = false;
String email = context.getValueAsString( Subscriber.EMAILFN );
if ( email != null )
{
Context searchContext = new Context( );
searchContext.copyDBTokens( context );
searchContext.put( "email", email );
Contexts results =
TableDescriptor.getDescriptor( "subscriber", "subscriber",
context ).match( searchContext, true );
if ( results.isEmpty( ) )
{
throw new DataFormatException(
grs( "Could not find a subscription with " +
"that email address", context ) );
}
else
{
Context candidate = (Context) results.get( 0 );
InternetAddress recipient = null;
try
{
recipient = new InternetAddress( email );
}
catch ( AddressException e )
{
throw new DataFormatException( email +
grs( "is not a well formed address", context ), e );
}
try
{
if ( !pat.sendAlert( recipient, mailSubject, candidate ) )
{
throw new DataStoreException(
grs( "Could not send password message",
context ) );
}
}
catch ( AlertingException e1 )
{
throw new DataStoreException(
grs( "Could not send password message",
context ), e1 );
}
context.put( Form.ACTIONEXECUTEDTOKEN,
grs( "Password mailed", context ) );
result = true;
}
}
return result;
}
}
--
simon@jasmine.org.uk (Simon Brooke) http://www.jasmine.org.uk/~simon/
;; Woz: 'All the best people in life seem to like LINUX.'
;; <URL:http://www.woz.org/woz/cresponses/response03.html>