如果激活SSL,Ant将使用默认SMTP端口而不是右端口

时间:2013-09-19 09:23:05

标签: eclipse ssl ant

我在Eclipse中使用Ant打包已编译的代码并通过电子邮件将其发送到我的存储服务器。为此,我使用以下目标。 不幸的是,每当我激活SSL时,都会省略参数mailport,而是使用标准端口465。但是服务器实际上已配置为使用端口25进行SSL。

<target name="Send mail" depends="zip">
    <echo>Sending mail</echo>
    <mail mailhost="mail.provider.net" password="XXXX" ssl="true" mailport="25" subject="nightly build">
      <from address="me@provider.net"/>
      <replyto address="me@provider.net"/>
      <to address="storage@provider.net"/>
      <message>The nightly build has completed</message>
      <attachments>
        <fileset dir="./src/">
          <include name="src.zip"/>
        </fileset>
      </attachments>
    </mail>
</target>

在运行时,我收到以下错误

  

无法发送电子邮件:无法连接到SMTP主机:   mail.provider.net,port:465

从2010年开始https://issues.apache.org/bugzilla/show_bug.cgi?id=49267,据说Ant版本1.8.1中存在这样的错误,在1.8.2中修复。 我有Eclipse Juno SR2和Ant v 1.8.3。

1 个答案:

答案 0 :(得分:1)

您似乎可以重新打开bug,因为:

  1. 这是not properly tested by the developper
  2. 查看JavaMail源代码(mail ant任务的底层实现),我发现了这个:

    port = PropUtil.getIntSessionProperty(session, "mail." + name + ".port", -1); //where name is 'smtp' or 'smtps' or ...

  3. 查看与错误49267相关的更改:

    props.put("mail.smtp.socketFactory.port", String.valueOf(port));

  4. 结论,补丁似乎是错误的,必须是:

    props.put("mail.smtp.port", String.valueOf(port));
    

    修改

    现在错误reopened and probably fixed