Author: michiel
Date: 2010-07-29 16:34:31 +0200 (Thu, 29 Jul 2010)
New Revision: 43017

Modified:
   mmbase/trunk/bridge/src/main/java/org/mmbase/framework/ErrorRenderer.java
Log:
redid a small optional part with reflection to avoid runtime dependency on 
mail.jar

Modified: 
mmbase/trunk/bridge/src/main/java/org/mmbase/framework/ErrorRenderer.java
===================================================================
--- mmbase/trunk/bridge/src/main/java/org/mmbase/framework/ErrorRenderer.java   
2010-07-29 14:30:21 UTC (rev 43016)
+++ mmbase/trunk/bridge/src/main/java/org/mmbase/framework/ErrorRenderer.java   
2010-07-29 14:34:31 UTC (rev 43017)
@@ -14,8 +14,6 @@
 import javax.servlet.http.*;
 import javax.servlet.jsp.*;
 import javax.servlet.*;
-import javax.mail.*;
-import javax.mail.internet.*;
 import java.io.*;
 import org.mmbase.bridge.NotFoundException;
 import org.mmbase.util.functions.*;
@@ -238,18 +236,23 @@
             if (status == 500) {
                 try {
                     Map<String, String> props = 
org.mmbase.util.ApplicationContextReader.getProperties("mmbase_errorpage");
-                    if (props.get("to") != null) {
+                    if (props.get("to") != null && props.get("to").length() > 
0) {
                         javax.naming.Context initCtx = new 
javax.naming.InitialContext();
                         javax.naming.Context envCtx = 
(javax.naming.Context)initCtx.lookup("java:comp/env");
-                        Session mailSession = (Session) 
envCtx.lookup("mail/Session");
-                        MimeMessage mail = new MimeMessage(mailSession);
-                        mail.addRecipients(Message.RecipientType.TO, 
InternetAddress.parse(props.get("to")));
-                        mail.setSubject(ticket);
-                        mail.setText(logMsg.toString());
-                        Transport.send(mail);
+                        Object mailSession = envCtx.lookup("mail/Session");
+
+                        Class sessionClass = 
Class.forName("javax.mail.Session");
+                        Class recipientTypeClass = 
Class.forName("javax.mail.Message$RecipientType");
+                        Class messageClass = 
Class.forName("javax.mail.internet.MimeMessage");
+                        Object mail = 
messageClass.getConstructor(sessionClass).newInstance(mailSession);
+                        messageClass.getMethod("addRecipients", 
recipientTypeClass, String.class).invoke(mail, 
recipientTypeClass.getDeclaredField("TO").get(null), props.get("to"));
+                        messageClass.getMethod("setSubject", 
String.class).invoke(mail, ticket);
+                        mail.getClass().getMethod("setText", 
String.class).invoke(mail, logMsg.toString());
+                        
Class.forName("javax.mail.Transport").getMethod("send", 
Class.forName("javax.mail.Message")).invoke(null, mail);
                         tee.append("\nmailed to (" + props + ")");
                     }
-                } catch (Throwable nnfe) {
+
+                } catch (Exception nnfe) {
                     tee.append("\nnot mailed (" + nnfe + ")");
                 }
                 log.error("TICKET " + ticket + ":\n" + logMsg);

_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to