当前位置: 代码迷 >> Java Web开发 >> 这个邮件发送系统,事先一直都比较好用。现在却不能发送了。大侠们帮忙啊
  详细解决方案

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

热度:3757   发布时间:2013-02-25 21:15:51.0
这个邮件发送系统,之前一直都比较好用。现在却不能发送了。大侠们帮忙啊!
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)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:441)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:280)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:243)
at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:165)
  相关解决方案