我在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。
答案 0 :(得分:1)
您似乎可以重新打开bug,因为:
查看JavaMail源代码(mail ant任务的底层实现),我发现了这个:
port = PropUtil.getIntSessionProperty(session, "mail." + name + ".port", -1);
//where name is 'smtp' or 'smtps' or ...
查看与错误49267相关的更改:
props.put("mail.smtp.socketFactory.port", String.valueOf(port));
结论,补丁似乎是错误的,必须是:
props.put("mail.smtp.port", String.valueOf(port));
修改强>