当前位置: 代码迷 >> J2EE >> 高分:25端口关闭,javamail仍然可以发送邮件的有关问题,付代码
  详细解决方案

高分:25端口关闭,javamail仍然可以发送邮件的有关问题,付代码

热度:585   发布时间:2016-04-22 02:52:16.0
高分:25端口关闭,javamail仍然可以发送邮件的问题,付代码
用windows系统,smtp之类的软件没有安装,同时telnet mail 25,也不通,查看25端口也是没有启用的状态;
但是我用javamail调用本地服务器发送邮件,居然能发送出去;
根据资料显示,邮件发送一般的流程是mua -> mta ->mda -> 发信;
请问,javamail发信的mta是什么? javamail最终是调用什么发信的呢? 为什么25端口关闭了,仍然可以发信呢?

求高手指点,谢谢.

调用本地服务器代码如下:
Java code
// DNS服务器,看看本机的DNS配置        String dns = "dns://192.168.0.1";        String email = "xxx@msn.com";        if(args.length>0)         email = args[0];        String domain = email.substring(email.indexOf('@')+1);        Hashtable env = new Hashtable();        env.put(Context.INITIAL_CONTEXT_FACTORY,          "com.sun.jndi.dns.DnsContextFactory");        env.put(Context.PROVIDER_URL, dns);        DirContext ctx = new InitialDirContext(env);        Attributes attr = ctx.getAttributes(domain, new String[]{"MX" });        NamingEnumeration servers = attr.getAll();        // 列出所有邮件服务器:        while(servers.hasMore()) {         Attribute hosts = (Attribute)servers.next();         for(int i=0;i<hosts.size();i++){          String host = (String)hosts.get(i);          host = host.substring(host.indexOf(' ')+1);          System.out.print("Send mail to " + host + " ...");          sendMail(host, email);          System.out.println("OK");         }        }


------解决方案--------------------
...你发信的时候25端口就打开了啊。。。

你telnet不通那是因为没有程序监听这个端口,你发信的时候邮件程序就开始监听了。

你弄个防火墙把25号端口封了你看还发不发的出去。。。
------解决方案--------------------
你自己的程序吧端口打开了
------解决方案--------------------
探讨
...你发信的时候25端口就打开了啊。。。

你telnet不通那是因为没有程序监听这个端口,你发信的时候邮件程序就开始监听了。

你弄个防火墙把25号端口封了你看还发不发的出去。。。

------解决方案--------------------
JMail 自己带了Min SMPT Server//??
当你程序执行的时候,它会触发启动,没研究过,只是猜测你要自己验证一下,很简单的!



------解决方案--------------------
java邮件系统自己写的感觉还不错 下载地址:http://download.csdn.net/source/3220522

另外还可以在这里先看看运行效果:http://blog.csdn.net/afgasdg/archive/2011/04/24/6359702.aspx