javaMail--邮件怎么发不出去?
刚学这个,如果大家看到什么低级错误,希望提醒下,谢谢,在线等哈
这是错误信息:
javax.mail.MessagingException: Could not connect to SMTP host: smtp.126.com, port: 25;
nested exception is:
java.net.SocketException: Permission denied: connect
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1934)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:638)
at javax.mail.Service.connect(Service.java:295)
at javax.mail.Service.connect(Service.java:176)
at module.Mcomposite.sendMail(Mcomposite.java:62)
at controller.CompositeServlet.doPost(CompositeServlet.java:46)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:306)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:541)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:383)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:243)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:166)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:288)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
Caused by: java.net.SocketException: Permission denied: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:69)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:337)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:198)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:180)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:157)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391)
at java.net.Socket.connect(Socket.java:579)
at java.net.Socket.connect(Socket.java:528)
at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:288)
at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:231)
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1900)
... 23 more
这是部分代码:
try{
String user=(String)mySession.getAttribute("user");
conn=com.getDBConnection();
String query="select * from mail_setting where username=?";
stmt=conn.prepareStatement(query);
stmt.setString(1, user);
rs=stmt.executeQuery();
if(rs.next()){
Host=rs.getString(5);
User=rs.getString(6);
Pass=rs.getString(7);
Address=rs.getString(8);
}else{
mySession.setAttribute("errMsg", "请先进行邮箱设置");
return false;
}
//尝试连接smtp服务器并发送邮件....
Properties props=System.getProperties();
// 根据邮件会话属性和密码验证器构造一个发送邮件的session.......
session=Session.getDefaultInstance(props,null);
//设置发送服务器地址.....
props.put("mail.smtp.host", Host);
props.put("mail.smtp.auth", "true");
// 根据session创建一个邮件消息 .....
MimeMessage message=new MimeMessage(session);
//创建邮件发送者地址 .....
message.setFrom(new InternetAddress(Address));
message.addRecipient(Message.RecipientType.TO, new InternetAddress(receiver));
message.setSubject(subject);
// 设置邮件消息的主要内容 .....
message.setText(content);
message.saveChanges();
// 发送邮件.....
Transport transport=session.getTransport("smtp");
transport.connect(Host, User, Pass);
transport.sendMessage(message, message.getAllRecipients());
transport.close();
//如果发送成功,则从发件箱中删除邮件.....
String DeleteQuery="delete from sendbox where username=? and save_time=?";
stmt=conn.prepareStatement(DeleteQuery);
stmt.setString(1, user);
stmt.setString(2, savetime);
stmt.executeUpdate();
}catch (Exception e){
e.printStackTrace();
mySession.setAttribute("errMsg", "发送邮件时出现错误!请确认您的邮箱设置无误!");
return false;
}
return true;
}