azkaban-developers

Merge pull request #311 from ReccaHokage/email-no-auth Add

10/1/2014 1:51:27 AM

Details

diff --git a/azkaban-common/src/main/java/azkaban/utils/AbstractMailer.java b/azkaban-common/src/main/java/azkaban/utils/AbstractMailer.java
index a9074a7..6fecc05 100644
--- a/azkaban-common/src/main/java/azkaban/utils/AbstractMailer.java
+++ b/azkaban-common/src/main/java/azkaban/utils/AbstractMailer.java
@@ -22,6 +22,7 @@ public class AbstractMailer {
   private String clientHostname;
   private int clientPort;
   private boolean usesSSL;
+  private boolean usesAuth;
 
   private String mailHost;
   private String mailUser;
@@ -37,11 +38,12 @@ public class AbstractMailer {
     this.mailUser = props.getString("mail.user", "");
     this.mailPassword = props.getString("mail.password", "");
     this.mailSender = props.getString("mail.sender", "");
-
+    this.usesAuth = props.getBoolean("mail.useAuth", true);
+    
     this.clientHostname = props.get("server.hostname");
     this.clientPort = props.getInt("server.port");
     this.usesSSL = props.getBoolean("server.useSSL");
-
+    
     if (usesSSL) {
       referenceURL =
           "https://" + clientHostname
@@ -64,6 +66,7 @@ public class AbstractMailer {
     message.addAllToAddress(emailList);
     message.setMimeType(mimetype);
     message.setSubject(subject);
+    message.setAuth(usesAuth);
 
     return message;
   }
@@ -92,4 +95,8 @@ public class AbstractMailer {
   public String getMailSender() {
     return mailSender;
   }
+  
+  public boolean hasMailAuth(){
+      return usesAuth;
+  }
 }
diff --git a/azkaban-common/src/main/java/azkaban/utils/Emailer.java b/azkaban-common/src/main/java/azkaban/utils/Emailer.java
index 947800a..ab09312 100644
--- a/azkaban-common/src/main/java/azkaban/utils/Emailer.java
+++ b/azkaban-common/src/main/java/azkaban/utils/Emailer.java
@@ -64,7 +64,7 @@ public class Emailer extends AbstractMailer implements Alerter {
     this.mailPassword = props.getString("mail.password", "");
     this.mailSender = props.getString("mail.sender", "");
     this.tls = props.getString("mail.tls", "false");
-
+    
     int mailTimeout = props.getInt("mail.timeout.millis", 10000);
     EmailMessage.setTimeout(mailTimeout);
     int connectionTimeout =
@@ -110,6 +110,7 @@ public class Emailer extends AbstractMailer implements Alerter {
     EmailMessage message = new EmailMessage(mailHost, mailUser, mailPassword);
     message.setFromAddress(mailSender);
     message.setTLS(tls);
+    message.setAuth(super.hasMailAuth());
 
     ExecutionOptions option = flow.getExecutionOptions();
 
@@ -136,7 +137,8 @@ public class Emailer extends AbstractMailer implements Alerter {
     EmailMessage message = new EmailMessage(mailHost, mailUser, mailPassword);
     message.setFromAddress(mailSender);
     message.setTLS(tls);
-
+    message.setAuth(super.hasMailAuth());
+    
     ExecutionOptions option = flow.getExecutionOptions();
 
     MailCreator mailCreator =
@@ -161,7 +163,8 @@ public class Emailer extends AbstractMailer implements Alerter {
     EmailMessage message = new EmailMessage(mailHost, mailUser, mailPassword);
     message.setFromAddress(mailSender);
     message.setTLS(tls);
-
+    message.setAuth(super.hasMailAuth());
+    
     ExecutionOptions option = flow.getExecutionOptions();
 
     MailCreator mailCreator =
diff --git a/azkaban-common/src/main/java/azkaban/utils/EmailMessage.java b/azkaban-common/src/main/java/azkaban/utils/EmailMessage.java
index c939b13..8e54527 100644
--- a/azkaban-common/src/main/java/azkaban/utils/EmailMessage.java
+++ b/azkaban-common/src/main/java/azkaban/utils/EmailMessage.java
@@ -48,6 +48,7 @@ public class EmailMessage {
   private String _fromAddress;
   private String _mimeType = "text/plain";
   private String _tls;
+  private boolean _usesAuth = true;
   private StringBuffer _body = new StringBuffer();
   private static int _mailTimeout = 10000;
   private static int _connectionTimeout = 10000;
@@ -111,6 +112,11 @@ public class EmailMessage {
     _tls = tls;
     return this;
   }
+  
+  public EmailMessage setAuth(boolean auth) {
+      _usesAuth = auth;
+      return this;
+  }
 
   public EmailMessage addAttachment(File file) throws MessagingException {
     return addAttachment(file.getName(), file);
@@ -155,10 +161,14 @@ public class EmailMessage {
   public void sendEmail() throws MessagingException {
     checkSettings();
     Properties props = new Properties();
+    if (_usesAuth) {
+        props.put("mail." + protocol + ".auth", "true");
+        props.put("mail.user", _mailUser);
+        props.put("mail.password", _mailPassword);
+    } else {
+        props.put("mail." + protocol + ".auth", "false");
+    }
     props.put("mail." + protocol + ".host", _mailHost);
-    props.put("mail." + protocol + ".auth", "true");
-    props.put("mail.user", _mailUser);
-    props.put("mail.password", _mailPassword);
     props.put("mail." + protocol + ".timeout", _mailTimeout);
     props.put("mail." + protocol + ".connectiontimeout", _connectionTimeout);
     props.put("mail.smtp.starttls.enable", _tls);
@@ -194,7 +204,11 @@ public class EmailMessage {
     // Transport transport = session.getTransport();
 
     SMTPTransport t = (SMTPTransport) session.getTransport(protocol);
-    t.connect(_mailHost, _mailUser, _mailPassword);
+    if (_usesAuth) {
+        t.connect(_mailHost, _mailUser, _mailPassword);
+    } else {
+        t.connect();
+    }
     t.sendMessage(message, message.getRecipients(Message.RecipientType.TO));
     t.close();
   }