You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by di...@apache.org on 2007/02/01 06:58:40 UTC

svn commit: r502132 - in /jakarta/commons/proper/email/trunk/src: java/org/apache/commons/mail/Email.java test/org/apache/commons/mail/HtmlEmailTest.java

Author: dion
Date: Wed Jan 31 21:58:39 2007
New Revision: 502132

URL: http://svn.apache.org/viewvc?view=rev&rev=502132
Log:
Applied EMAIL-59.
Also changed the way the HTMLEmailTest class did it's failure handling, because
failing tests would just print out a message and not provide the actual exception
message and a stack trace to help fix it.

Modified:
    jakarta/commons/proper/email/trunk/src/java/org/apache/commons/mail/Email.java
    jakarta/commons/proper/email/trunk/src/test/org/apache/commons/mail/HtmlEmailTest.java

Modified: jakarta/commons/proper/email/trunk/src/java/org/apache/commons/mail/Email.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/email/trunk/src/java/org/apache/commons/mail/Email.java?view=diff&rev=502132&r1=502131&r2=502132
==============================================================================
--- jakarta/commons/proper/email/trunk/src/java/org/apache/commons/mail/Email.java (original)
+++ jakarta/commons/proper/email/trunk/src/java/org/apache/commons/mail/Email.java Wed Jan 31 21:58:39 2007
@@ -97,6 +97,12 @@
      */
     public static final String MAIL_TRANSPORT_TLS = "mail.smtp.starttls.enable";
     /** */
+    public static final String MAIL_SMTP_SOCKET_FACTORY_FALLBACK = "mail.smtp.socketFactory.fallback";
+    /** */
+    public static final String MAIL_SMTP_SOCKET_FACTORY_CLASS = "mail.smtp.socketFactory.class";
+    /** */
+    public static final String MAIL_SMTP_SOCKET_FACTORY_PORT = "mail.smtp.socketFactory.port";
+    /** */
     public static final String SMTP = "smtp";
     /** */
     public static final String TEXT_HTML = "text/html";
@@ -160,6 +166,12 @@
      * Defaults to the standard port ( 25 ).
      */
     protected String smtpPort = "25";
+    
+    /**
+     * The port number of the SSL enabled SMTP server;
+     * defaults to the standard port, 465. 
+     */
+    protected String sslSmtpPort = "465";
 
     /** List of "to" email adresses */
     protected List toList = new ArrayList();
@@ -206,6 +218,8 @@
 
     /** does server require TLS encryption for authentication */
     protected boolean tls = false;
+    /** does the current transport use SSL encryption? */
+    protected boolean ssl = false;
     
     /**
      * Setting to true will enable the display of debug information.
@@ -442,6 +456,14 @@
                 properties.setProperty(MAIL_SMTP_AUTH, "true");
             }
 
+            if (this.ssl)
+            {
+                properties.setProperty(MAIL_PORT, sslSmtpPort);
+                properties.setProperty(MAIL_SMTP_SOCKET_FACTORY_PORT, sslSmtpPort);
+                properties.setProperty(MAIL_SMTP_SOCKET_FACTORY_CLASS, "javax.net.ssl.SSLSocketFactory");
+                properties.setProperty(MAIL_SMTP_SOCKET_FACTORY_FALLBACK, "false");           	
+            }
+
             if (this.bounceAddress != null)
             {
                 properties.setProperty(MAIL_SMTP_FROM, this.bounceAddress);
@@ -1114,6 +1136,46 @@
         this.popHost = newPopHost;
         this.popUsername = newPopUsername;
         this.popPassword = newPopPassword;
+    }
+
+    /**
+     * Returns whether SSL encryption for the transport is currently enabled.
+     * @return true if SSL enabled for the transport
+     */
+    public boolean isSSL() {
+        return ssl;
+    }
+
+    /**
+     * Sets whether SSL encryption should be enabled for the SMTP transport.
+     * @param ssl whether to enable the SSL transport
+     */
+    public void setSSL(boolean ssl) {
+        this.ssl = ssl;
+    }
+
+    /**
+     * Returns the current SSL port used by the SMTP transport.
+     * @return the current SSL port used by the SMTP transport
+     */
+    public String getSslSmtpPort() {
+        if (EmailUtils.isNotEmpty(this.sslSmtpPort))
+        {
+            return this.sslSmtpPort;
+        }
+        else
+        {
+            return this.session.getProperty(MAIL_SMTP_SOCKET_FACTORY_PORT);
+        }
+    }
+
+    /**
+     * Sets the SSL port to use for the SMTP transport. Defaults to the standard
+     * port, 465.
+     * @param sslSmtpPort the SSL port to use for the SMTP transport
+     */
+    public void setSslSmtpPort(String sslSmtpPort) {
+        this.sslSmtpPort = sslSmtpPort;
     }
 }
 

Modified: jakarta/commons/proper/email/trunk/src/test/org/apache/commons/mail/HtmlEmailTest.java
URL: http://svn.apache.org/viewvc/jakarta/commons/proper/email/trunk/src/test/org/apache/commons/mail/HtmlEmailTest.java?view=diff&rev=502132&r1=502131&r2=502132
==============================================================================
--- jakarta/commons/proper/email/trunk/src/test/org/apache/commons/mail/HtmlEmailTest.java (original)
+++ jakarta/commons/proper/email/trunk/src/test/org/apache/commons/mail/HtmlEmailTest.java Wed Jan 31 21:58:39 2007
@@ -52,23 +52,17 @@
         this.email = new MockHtmlEmailConcrete();
     }
 
-    /** */
-    public void testGetSetTextMsg()
+    /**
+     * @throws EmailException  */
+    public void testGetSetTextMsg() throws EmailException
     {
         // ====================================================================
         // Test Success
         // ====================================================================
-        try
-        {
-            for (int i = 0; i < testCharsValid.length; i++)
-            {
-                this.email.setTextMsg(testCharsValid[i]);
-                assertEquals(testCharsValid[i], this.email.getTextMsg());
-            }
-        }
-        catch (EmailException e)
+        for (int i = 0; i < testCharsValid.length; i++)
         {
-            fail("Shoudn't have thrown exception");
+            this.email.setTextMsg(testCharsValid[i]);
+            assertEquals(testCharsValid[i], this.email.getTextMsg());
         }
 
         // ====================================================================
@@ -85,31 +79,22 @@
             {
                 assertTrue(true);
             }
-            catch (Exception e)
-            {
-                fail("Unexpected exception thrown");
-            }
         }
 
     }
 
-    /** */
-    public void testGetSetHtmlMsg()
+    /**
+     * @throws EmailException  
+     */
+    public void testGetSetHtmlMsg() throws EmailException
     {
         // ====================================================================
         // Test Success
         // ====================================================================
-        try
-        {
-            for (int i = 0; i < testCharsValid.length; i++)
-            {
-                this.email.setHtmlMsg(testCharsValid[i]);
-                assertEquals(testCharsValid[i], this.email.getHtmlMsg());
-            }
-        }
-        catch (EmailException e)
+        for (int i = 0; i < testCharsValid.length; i++)
         {
-            fail("Shoudn't have thrown exception");
+            this.email.setHtmlMsg(testCharsValid[i]);
+            assertEquals(testCharsValid[i], this.email.getHtmlMsg());
         }
 
         // ====================================================================
@@ -126,34 +111,24 @@
             {
                 assertTrue(true);
             }
-            catch (Exception e)
-            {
-                fail("Unexpected exception thrown");
-            }
         }
 
     }
 
-    /** */
-    public void testGetSetMsg()
+    /**
+     * @throws EmailException  */
+    public void testGetSetMsg() throws EmailException
     {
         // ====================================================================
         // Test Success
         // ====================================================================
-        try
+        for (int i = 0; i < testCharsValid.length; i++)
         {
-            for (int i = 0; i < testCharsValid.length; i++)
-            {
-                this.email.setMsg(testCharsValid[i]);
-                assertEquals(testCharsValid[i], this.email.getTextMsg());
+            this.email.setMsg(testCharsValid[i]);
+            assertEquals(testCharsValid[i], this.email.getTextMsg());
 
-                assertTrue(
-                    this.email.getHtmlMsg().indexOf(testCharsValid[i]) != -1);
-            }
-        }
-        catch (EmailException e)
-        {
-            fail("Shoudn't have thrown exception");
+            assertTrue(
+                this.email.getHtmlMsg().indexOf(testCharsValid[i]) != -1);
         }
 
         // ====================================================================
@@ -170,10 +145,6 @@
             {
                 assertTrue(true);
             }
-            catch (Exception e)
-            {
-                fail("Unexpected exception thrown");
-            }
         }
 
     }
@@ -206,148 +177,119 @@
         {
             assertTrue(true);
         }
-        catch (Exception e)
-        {
-            fail("Unexpected exception thrown");
-        }
     }
 
-    /** */
-    public void testSend()
+    /**
+     * @throws EmailException  
+     * @throws IOException */
+    public void testSend() throws EmailException, IOException
     {
         EmailAttachment attachment = new EmailAttachment();
         File testFile = null;
 
-        try
-        {
-            /** File to used to test file attachments (Must be valid) */
-            testFile = File.createTempFile("commons-email-testfile", ".txt");
-        }
-        catch (IOException e)
-        {
-            fail("Test file cannot be found");
-        }
+        /** File to used to test file attachments (Must be valid) */
+        testFile = File.createTempFile("commons-email-testfile", ".txt");
 
         // ====================================================================
         // Test Success
         // ====================================================================
-        try
-        {
-            this.getMailServer();
-
-            String strSubject = "Test HTML Send #1 Subject (w charset)";
+        this.getMailServer();
 
-            this.email = new MockHtmlEmailConcrete();
-            this.email.setHostName(this.strTestMailServer);
-            this.email.setSmtpPort(this.getMailServerPort());
-            this.email.setFrom(this.strTestMailFrom);
-            this.email.addTo(this.strTestMailTo);
-
-            /** File to used to test file attachmetns (Must be valid) */
-            attachment.setName("Test Attachment");
-            attachment.setDescription("Test Attachment Desc");
-            attachment.setPath(testFile.getAbsolutePath());
-            this.email.attach(attachment);
-
-            this.email.setAuthentication(this.strTestUser, this.strTestPasswd);
-
-            this.email.setCharset(Email.ISO_8859_1);
-            this.email.setSubject(strSubject);
-
-            URL url = new URL(EmailConfiguration.TEST_URL);
-            String cid = this.email.embed(url, "Apache Logo");
-
-            String strHtmlMsg =
-                "<html>The Apache logo - <img src=\"cid:" + cid + "\"><html>";
-
-            this.email.setHtmlMsg(strHtmlMsg);
-            this.email.setTextMsg(
-                "Your email client does not support HTML emails");
-
-            this.email.send();
-            this.fakeMailServer.stop();
-            // validate txt message
-            validateSend(
-                this.fakeMailServer,
-                strSubject,
-                this.email.getTextMsg(),
-                this.email.getFromAddress(),
-                this.email.getToList(),
-                this.email.getCcList(),
-                this.email.getBccList(),
-                true);
-
-            // validate html message
-            validateSend(
-                this.fakeMailServer,
-                strSubject,
-                this.email.getHtmlMsg(),
-                this.email.getFromAddress(),
-                this.email.getToList(),
-                this.email.getCcList(),
-                this.email.getBccList(),
-                false);
-
-            // validate attachment
-            validateSend(
-                this.fakeMailServer,
-                strSubject,
-                attachment.getName(),
-                this.email.getFromAddress(),
-                this.email.getToList(),
-                this.email.getCcList(),
-                this.email.getBccList(),
-                false);
-        }
-        catch (Exception e)
-        {
-            fail("Unexpected exception thrown");
-        }
+        String strSubject = "Test HTML Send #1 Subject (w charset)";
 
-        try
-        {
-            this.getMailServer();
-
-            this.email = new MockHtmlEmailConcrete();
-            this.email.setHostName(this.strTestMailServer);
-            this.email.setSmtpPort(this.getMailServerPort());
-            this.email.setFrom(this.strTestMailFrom);
-            this.email.addTo(this.strTestMailTo);
-
-            if (this.strTestUser != null && this.strTestPasswd != null)
-            {
-                this.email.setAuthentication(
-                    this.strTestUser,
-                    this.strTestPasswd);
-            }
-
-            String strSubject = "Test HTML Send #1 Subject (wo charset)";
-            this.email.setSubject(strSubject);
-            this.email.setTextMsg("Test message");
-
-            this.email.send();
-            this.fakeMailServer.stop();
-            // validate txt message
-            validateSend(
-                this.fakeMailServer,
-                strSubject,
-                this.email.getTextMsg(),
-                this.email.getFromAddress(),
-                this.email.getToList(),
-                this.email.getCcList(),
-                this.email.getBccList(),
-                true);
-        }
-
-        catch (IOException e)
-        {
-            fail("Failed to save email to output file");
-        }
-        catch (Exception e)
-        {
-            e.printStackTrace();
-            fail("Unexpected exception thrown");
-        }
+        this.email = new MockHtmlEmailConcrete();
+        this.email.setHostName(this.strTestMailServer);
+        this.email.setSmtpPort(this.getMailServerPort());
+        this.email.setFrom(this.strTestMailFrom);
+        this.email.addTo(this.strTestMailTo);
+
+        /** File to used to test file attachmetns (Must be valid) */
+        attachment.setName("Test Attachment");
+        attachment.setDescription("Test Attachment Desc");
+        attachment.setPath(testFile.getAbsolutePath());
+        this.email.attach(attachment);
+
+        this.email.setAuthentication(this.strTestUser, this.strTestPasswd);
+
+        this.email.setCharset(Email.ISO_8859_1);
+        this.email.setSubject(strSubject);
+
+        URL url = new URL(EmailConfiguration.TEST_URL);
+        String cid = this.email.embed(url, "Apache Logo");
+
+        String strHtmlMsg =
+            "<html>The Apache logo - <img src=\"cid:" + cid + "\"><html>";
+
+        this.email.setHtmlMsg(strHtmlMsg);
+        this.email.setTextMsg(
+            "Your email client does not support HTML emails");
+
+        this.email.send();
+        this.fakeMailServer.stop();
+        // validate txt message
+        validateSend(
+            this.fakeMailServer,
+            strSubject,
+            this.email.getTextMsg(),
+            this.email.getFromAddress(),
+            this.email.getToList(),
+            this.email.getCcList(),
+            this.email.getBccList(),
+            true);
+
+        // validate html message
+        validateSend(
+            this.fakeMailServer,
+            strSubject,
+            this.email.getHtmlMsg(),
+            this.email.getFromAddress(),
+            this.email.getToList(),
+            this.email.getCcList(),
+            this.email.getBccList(),
+            false);
+
+        // validate attachment
+        validateSend(
+            this.fakeMailServer,
+            strSubject,
+            attachment.getName(),
+            this.email.getFromAddress(),
+            this.email.getToList(),
+            this.email.getCcList(),
+            this.email.getBccList(),
+            false);
+
+        this.getMailServer();
+
+        this.email = new MockHtmlEmailConcrete();
+        this.email.setHostName(this.strTestMailServer);
+        this.email.setSmtpPort(this.getMailServerPort());
+        this.email.setFrom(this.strTestMailFrom);
+        this.email.addTo(this.strTestMailTo);
+
+        if (this.strTestUser != null && this.strTestPasswd != null)
+        {
+            this.email.setAuthentication(
+                this.strTestUser,
+                this.strTestPasswd);
+        }
+
+        strSubject = "Test HTML Send #1 Subject (wo charset)";
+        this.email.setSubject(strSubject);
+        this.email.setTextMsg("Test message");
+
+        this.email.send();
+        this.fakeMailServer.stop();
+        // validate txt message
+        validateSend(
+            this.fakeMailServer,
+            strSubject,
+            this.email.getTextMsg(),
+            this.email.getFromAddress(),
+            this.email.getToList(),
+            this.email.getCcList(),
+            this.email.getBccList(),
+            true);
     }
 
     /**



---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org