diff --git a/WHATSNEW b/WHATSNEW index eb5aa544e..a69f68237 100644 --- a/WHATSNEW +++ b/WHATSNEW @@ -17,6 +17,9 @@ Changes that could break older environments: Fixed bugs: ----------- + * The MIME mailer ignored the port parameter when using SSL. + Bugzilla Report 49267. + Other changes: -------------- diff --git a/src/main/org/apache/tools/ant/taskdefs/email/EmailTask.java b/src/main/org/apache/tools/ant/taskdefs/email/EmailTask.java index b0a4d62ab..2d43854bf 100644 --- a/src/main/org/apache/tools/ant/taskdefs/email/EmailTask.java +++ b/src/main/org/apache/tools/ant/taskdefs/email/EmailTask.java @@ -69,7 +69,7 @@ public class EmailTask extends Task { private String encoding = AUTO; /** host running SMTP */ private String host = "localhost"; - private int port = SMTP_PORT; + private Integer port = null; /** subject field */ private String subject = null; /** any text */ @@ -161,7 +161,7 @@ public class EmailTask extends Task { * @param port The port to use. */ public void setMailport(int port) { - this.port = port; + this.port = Integer.valueOf(port); } /** @@ -549,7 +549,13 @@ public class EmailTask extends Task { // pass the params to the mailer mailer.setHost(host); - mailer.setPort(port); + if (port != null) { + mailer.setPort(port.intValue()); + mailer.setPortExplicitlySpecified(true); + } else { + mailer.setPort(SMTP_PORT); + mailer.setPortExplicitlySpecified(false); + } mailer.setUser(user); mailer.setPassword(password); mailer.setSSL(ssl); diff --git a/src/main/org/apache/tools/ant/taskdefs/email/Mailer.java b/src/main/org/apache/tools/ant/taskdefs/email/Mailer.java index 5a0d3e4cc..d94a42285 100644 --- a/src/main/org/apache/tools/ant/taskdefs/email/Mailer.java +++ b/src/main/org/apache/tools/ant/taskdefs/email/Mailer.java @@ -50,6 +50,7 @@ public abstract class Mailer { // CheckStyle:VisibilityModifier ON private boolean ignoreInvalidRecipients = false; private boolean starttls = false; + private boolean portExplicitlySpecified = false; /** * Set the mail server. @@ -69,6 +70,22 @@ public abstract class Mailer { this.port = port; } + /** + * Whether the port has been explicitly specified by the user. + * @since Ant 1.8.2 + */ + public void setPortExplicitlySpecified(boolean explicit) { + portExplicitlySpecified = explicit; + } + + /** + * Whether the port has been explicitly specified by the user. + * @since Ant 1.8.2 + */ + protected boolean isPortExplicitlySpecified() { + return portExplicitlySpecified; + } + /** * Set the user for smtp auth. * diff --git a/src/main/org/apache/tools/ant/taskdefs/email/MimeMailer.java b/src/main/org/apache/tools/ant/taskdefs/email/MimeMailer.java index b4cbfe150..965d898c5 100644 --- a/src/main/org/apache/tools/ant/taskdefs/email/MimeMailer.java +++ b/src/main/org/apache/tools/ant/taskdefs/email/MimeMailer.java @@ -157,6 +157,10 @@ public class MimeMailer extends Mailer { // SMTP provider props.put("mail.smtp.socketFactory.class", SSL_FACTORY); props.put("mail.smtp.socketFactory.fallback", "false"); + if (isPortExplicitlySpecified()) { + props.put("mail.smtp.socketFactory.port", + String.valueOf(port)); + } } if (user != null || password != null) { props.put("mail.smtp.auth", "true");