You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-dev@logging.apache.org by ca...@apache.org on 2008/10/09 23:12:25 UTC

svn commit: r703261 - in /logging/log4j/trunk/src: changes/changes.xml main/java/org/apache/log4j/net/SMTPAppender.java

Author: carnold
Date: Thu Oct  9 14:12:25 2008
New Revision: 703261

URL: http://svn.apache.org/viewvc?rev=703261&view=rev
Log:
Bug 25355: Support SSL transport in SMTPAppender

Modified:
    logging/log4j/trunk/src/changes/changes.xml
    logging/log4j/trunk/src/main/java/org/apache/log4j/net/SMTPAppender.java

Modified: logging/log4j/trunk/src/changes/changes.xml
URL: http://svn.apache.org/viewvc/logging/log4j/trunk/src/changes/changes.xml?rev=703261&r1=703260&r2=703261&view=diff
==============================================================================
--- logging/log4j/trunk/src/changes/changes.xml (original)
+++ logging/log4j/trunk/src/changes/changes.xml Thu Oct  9 14:12:25 2008
@@ -63,6 +63,7 @@
        <action action="fix" issue="44386">NTEventLogAppender.dll for 64-bit editions for Microsoft Windows.</action>
        <action action="fix" issue="45721">Add configuration of ThrowableRenderers and add org.apache.log4j.EnhancedThrowableRenderer.</action>
        <action action="fix" issue="45969">SMTPAppender does not force evaluation of message at request time</action>
+       <action action="fix" issue="25355">Support SSL transport in SMTPAppender</action>
     </release>
 
   

Modified: logging/log4j/trunk/src/main/java/org/apache/log4j/net/SMTPAppender.java
URL: http://svn.apache.org/viewvc/logging/log4j/trunk/src/main/java/org/apache/log4j/net/SMTPAppender.java?rev=703261&r1=703260&r2=703261&view=diff
==============================================================================
--- logging/log4j/trunk/src/main/java/org/apache/log4j/net/SMTPAppender.java (original)
+++ logging/log4j/trunk/src/main/java/org/apache/log4j/net/SMTPAppender.java Thu Oct  9 14:12:25 2008
@@ -67,6 +67,8 @@
    
    This class has implemented UnrecognizedElementHandler since 1.2.15.
 
+   Since 1.2.16, SMTP over SSL is supported by setting SMTPProtocol to "smpts".
+
    @author Ceki G&uuml;lc&uuml;
    @since 1.0 */
 public class SMTPAppender extends AppenderSkeleton
@@ -85,6 +87,8 @@
   private String smtpHost;
   private String smtpUsername;
   private String smtpPassword;
+  private String smtpProtocol;
+  private int smtpPort = -1;
   private boolean smtpDebug = false;
   private int bufferSize = 512;
   private boolean locationInfo = false;
@@ -177,13 +181,22 @@
     } catch(SecurityException ex) {
         props = new Properties();
     }
+
+    String prefix = "mail.smtp";
+    if (smtpProtocol != null) {
+        props.put("mail.transport.protocol", smtpProtocol);
+        prefix = "mail." + smtpProtocol;
+    }
     if (smtpHost != null) {
-      props.put("mail.smtp.host", smtpHost);
+      props.put(prefix + ".host", smtpHost);
+    }
+    if (smtpPort > 0) {
+        props.put(prefix + ".port", String.valueOf(smtpPort));
     }
     
     Authenticator auth = null;
     if(smtpPassword != null && smtpUsername != null) {
-      props.put("mail.smtp.auth", "true");
+      props.put(prefix + ".auth", "true");
       auth = new Authenticator() {
         protected PasswordAuthentication getPasswordAuthentication() {
           return new PasswordAuthentication(smtpUsername, smtpPassword);
@@ -191,6 +204,9 @@
       };
     }
     Session session = Session.getInstance(props, auth);
+    if (smtpProtocol != null) {
+        session.setProtocolForAddress("rfc822", smtpProtocol);
+    }
     if (smtpDebug) {
         session.setDebug(smtpDebug);
     }
@@ -608,6 +624,49 @@
       return false;
   }
 
+    /**
+     * Get transport protocol.
+     * Typically null or "smtps".
+     *
+     * @return transport protocol, may be null.
+     * @since 1.2.16
+     */
+  public final String getSMTPProtocol() {
+      return smtpProtocol;
+  }
+
+    /**
+     * Set transport protocol.
+     * Typically null or "smtps".
+     *
+     * @param val transport protocol, may be null.
+     * @since 1.2.16
+     */
+  public final void setSMTPProtocol(final String val) {
+      smtpProtocol = val;
+  }
+
+    /**
+     * Get port.
+     *
+     * @return port, negative values indicate use of default ports for protocol.
+     * @since 1.2.16
+     */
+  public final int getSMTPPort() {
+        return smtpPort;
+  }
+
+    /**
+     * Set port.
+     *
+     * @param val port, negative values indicate use of default ports for protocol.
+     * @since 1.2.16
+     */
+  public final void setSMTPPort(final int val) {
+        smtpPort = val;
+  }
+
+
 }
 
 class DefaultEvaluator implements TriggeringEventEvaluator {



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