FileDocCategorySizeDatePackage
SendMailFactory.javaAPI DocGlassfish v2 API5549Fri May 04 22:33:00 BST 2007org.apache.naming.factory

SendMailFactory

public class SendMailFactory extends Object implements ObjectFactory
Factory class that creates a JNDI named javamail MimePartDataSource object which can be used for sending email using SMTP.

Can be configured in the DefaultContext or Context scope of your server.xml configuration file.

Example:

<Resource name="mail/send" auth="CONTAINER"
type="javax.mail.internet.MimePartDataSource"/>
<ResourceParams name="mail/send">
<parameter><name>factory</name>
<value>org.apache.naming.factory.SendMailFactory</value>
</parameter>
<parameter><name>mail.smtp.host</name>
<value>your.smtp.host</value>
</parameter>
<parameter><name>mail.smtp.user</name>
<value>someuser</value>
</parameter>
<parameter><name>mail.from</name>
<value>someuser@some.host</value>
</parameter>
<parameter><name>mail.smtp.sendpartial</name>
<value>true</value>
</parameter>
<parameter><name>mail.smtp.dsn.notify</name>
<value>FAILURE</value>
</parameter>
<parameter><name>mail.smtp.dsn.ret</name>
<value>FULL</value>
</parameter>
</ResourceParams>
author
Glenn Nielsen Rich Catlett

Fields Summary
protected final String
DataSourceClassName
Constructors Summary
Methods Summary
public java.lang.ObjectgetObjectInstance(java.lang.Object RefObj, javax.naming.Name Nm, javax.naming.Context Ctx, java.util.Hashtable Env)


           
				        
    
	final Reference Ref = (Reference)RefObj;

	// Creation of the DataSource is wrapped inside a doPrivileged
	// so that javamail can read its default properties without
	// throwing Security Exceptions
	if (Ref.getClassName().equals(DataSourceClassName)) {
	    return AccessController.doPrivileged( new PrivilegedAction()
	    {
		public Object run() {
        	    // set up the smtp session that will send the message
	            Properties props = new Properties();
		    // enumeration of all refaddr
		    Enumeration list = Ref.getAll();
		    // current refaddr to be set
		    RefAddr refaddr;
	            // set transport to smtp
	            props.put("mail.transport.protocol", "smtp");

		    while (list.hasMoreElements()) {
			refaddr = (RefAddr)list.nextElement();

			// set property
			props.put(refaddr.getType(), (String)refaddr.getContent());
		    }
		    MimeMessage message = new MimeMessage(
			Session.getInstance(props));
		    try {
			String from = (String)Ref.get("mail.from").getContent();
		        message.setFrom(new InternetAddress(from));
		        message.setSubject("");
		    } catch (Exception e) {}
		    MimePartDataSource mds = new MimePartDataSource(
			(MimePart)message);
		    return mds;
		}
	    } );
	}
	else { // We can't create an instance of the DataSource
	    return null;
	}