高分:25端口关闭,javamail仍然可以发送邮件的问题,付代码
用windows系统,smtp之类的软件没有安装,同时telnet mail 25,也不通,查看25端口也是没有启用的状态;
但是我用javamail调用本地服务器发送邮件,居然能发送出去;
根据资料显示,邮件发送一般的流程是mua -> mta ->mda -> 发信;
请问,javamail发信的mta是什么? javamail最终是调用什么发信的呢? 为什么25端口关闭了,仍然可以发信呢?
求高手指点,谢谢.
调用本地服务器代码如下:
// 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"); } }