日期:2014-05-17  浏览次数:20826 次

这个邮件发送系统,之前一直都比较好用。现在却不能发送了。大侠们帮忙啊!
Java code

String dns = "dns://";
   //得到接受方的服务器域名
   String domain = mesg.getTo().substring(mesg.getTo().indexOf('@') + 1);
   System.out.println("执行:得到域名:"+domain);
   Hashtable env = new Hashtable();
   System.out.println("执行2");
   env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.dns.DnsContextFactory");
   System.out.println("执行3");
   env.put(Context.PROVIDER_URL, dns);
   System.out.println("执行4");
   DirContext ctx = new InitialDirContext(env);
   System.out.println("执行5");
   Attributes attrs =null;
   System.out.println("执行6");
   try{
       System.out.println("执行7");
   attrs = ctx.getAttributes(domain, new String[] {"MX"});
   System.out.println("执行8");
   }catch(NamingException e){
       e.printStackTrace();
   }catch(Exception e){
       System.out.println("执行9");
       e.printStackTrace();
   }
   System.out.println("执行:attrs:"+attrs+"//attrs.size()//"+attrs.size());
   if (attrs == null || attrs.size() <= 0) {
       System.out.println("执行6");
       throw new java.lang.IllegalStateException("错误:你的DNS服务器没有相应的MX记录!");
   }
   NamingEnumeration servers = attrs.getAll();
   // 列出所有邮件服务器:
   String smtpHost = null;
   boolean isSend = false;
   StringBuffer buf = new StringBuffer();
   while (servers.hasMore())
   {
       Attribute hosts = (Attribute) servers.next();
       for (int i = 0; i < hosts.size(); ++i)
       {
           smtpHost = (String) hosts.get(i);
           smtpHost = smtpHost.substring(smtpHost.lastIndexOf(' ') + 1);
           try{
               System.out.println("执行:smtpHost:"+smtpHost+"//mesg//"+mesg);
               sendEms(smtpHost, mesg);
               isSend = true;
               return;
           }catch(Exception e){
               e.printStackTrace();
               buf.append(e.toString()).append("\r\n");
               continue;
           }
       }
   }
   System.out.println("执行:isSend:"+isSend);
   if (!isSend) {
       throw new java.lang.IllegalStateException("错误:发送失败," + buf.toString());
   }


这个邮件发送系统,之前一直都比较好用。现在却不能发送了。大侠们帮忙啊!
异常如下:
javax.naming.OperationNotSupportedException: DNS service refused [response code 5]; remaining name 'qq.com'
at com.sun.jndi.dns.DnsClient.checkResponseCode(Unknown Source)
at com.sun.jndi.dns.DnsClient.isMatchResponse(Unknown Source)
at com.sun.jndi.dns.DnsClient.doUdpQuery(Unknown Source)
at com.sun.jndi.dns.DnsClient.query(Unknown Source)
at com.sun.jndi.dns.Resolver.query(Unknown Source)
at com.sun.jndi.dns.DnsContext.c_getAttributes(Unknown Source)
at com.sun.jndi.toolkit.ctx.ComponentDirContext.p_getAttributes(Unknown Source)
at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.getAttributes(Unknown Source)
at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.getAttributes(Unknown Source)
at javax.naming.directory.InitialDirContext.getAttributes(Unknown Source)
at action.SendMailGUI.sendMail(SendMailGUI.java:73)
at action.SendMailGUI.run(SendMailGUI.java:47)
at action.SendEmailAction.execute(SendEmailAction.java:98)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)