Sending mail from a bean..

G

gbattine

Hi guys,
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.
Thanks
 
S

Simon Brooke

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;
}
}
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,768
Messages
2,569,574
Members
45,051
Latest member
CarleyMcCr

Latest Threads

Top