SendMailFactory.javaAPI DocApache Tomcat 6.0.144483Fri Jul 20 04:20:32 BST 2007org.apache.naming.factory


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.


<Resource name="mail/send" auth="CONTAINER"
<ResourceParams name="mail/send">
Glenn Nielsen Rich Catlett

Fields Summary
protected final String
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(
		    try {
			String from = (String)Ref.get("mail.from").getContent();
		        message.setFrom(new InternetAddress(from));
		    } catch (Exception e) {}
		    MimePartDataSource mds = new MimePartDataSource(
		    return mds;
	    } );
	else { // We can't create an instance of the DataSource
	    return null;