javaMail--邮件怎么发不出去?

a742358491 2012-11-29 11:24:12
刚学这个,如果大家看到什么低级错误,希望提醒下,谢谢,在线等哈
这是错误信息:
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;
}
...全文
641 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
a742358491 2012-12-03
  • 打赏
  • 举报
回复
引用 16 楼 Giberson1 的回复:
不是你程序的问题,是因为你所在的网络连接不到smtp.126.com
嗯,程序我也看不出什么问题,但是,因为是初学,所以也不知道怎么设置,求指教.....嘿嘿
Giberson1 2012-12-03
  • 打赏
  • 举报
回复
不是你程序的问题,是因为你所在的网络连接不到smtp.126.com
a742358491 2012-12-02
  • 打赏
  • 举报
回复
引用 14 楼 params 的回复:
我是用spring集成的JavaMailSender来发送邮件的, 感觉简单点
额,目前还没朝spring方面弄,嘿嘿,不过还是谢谢你
a742358491 2012-12-01
  • 打赏
  • 举报
回复
还是没弄出来,有人会么?
params 2012-12-01
  • 打赏
  • 举报
回复
我是用spring集成的JavaMailSender来发送邮件的, 感觉简单点
网络科技 2012-11-30
  • 打赏
  • 举报
回复
把: Host=rs.getString(5); User=rs.getString(6); Pass=rs.getString(7); Address=rs.getString(8); 改成: Host="smtp.163.com"; User="user"; Pass="pass"; Address="xxx@xx.xx"; 连接服务器都连不了,说明你的数据有问题,还有就是,你要确保邮箱已开通了smtp,pop3服务
a742358491 2012-11-30
  • 打赏
  • 举报
回复
[/quote]
引用 4 楼 lixiaomeng627 的回复:
设置错了呗 !!!
设置应该没什么问题
lixiaomeng627 2012-11-30
  • 打赏
  • 举报
回复
设置错了呗 !!!
a742358491 2012-11-30
  • 打赏
  • 举报
回复
引用 10 楼 jumpheightway 的回复:
看了看 你这个是没有认证的结果 需要到邮件服务器认证
请问怎么去认证呢?在网上没搜到相关的额
licip 2012-11-30
  • 打赏
  • 举报
回复
你再加一句:props.setProperty("mail.transport.protocol","smtp");
jumpheightway 2012-11-30
  • 打赏
  • 举报
回复
看了看 你这个是没有认证的结果 需要到邮件服务器认证
jumpheightway 2012-11-30
  • 打赏
  • 举报
回复
126的是最好连的 如果126的都连不上 其他的就更难了
网络科技 2012-11-30
  • 打赏
  • 举报
回复
引用 7 楼 a742358491 的回复:
引用 6 楼 xzy88 的回复:把: Host=rs.getString(5); User=rs.getString(6); Pass=rs.getString(7); Address=rs.getString(8); 改成: Host="smtp.163.com"……
开通邮件收发服务,跟你是什么系统没关系啊,是邮箱服务商的,比如,163,你要登录邮箱去设置,有些是默认开通的,有些你要自己去开通,我印象中,QQ,新浪邮箱都要自己去开通。
a742358491 2012-11-30
  • 打赏
  • 举报
回复
引用 6 楼 xzy88 的回复:
把: Host=rs.getString(5); User=rs.getString(6); Pass=rs.getString(7); Address=rs.getString(8); 改成: Host="smtp.163.com"; Use……
嗯,我也才是刚发现这个问题,我的win7是家庭版的,貌似没有ISS这个东西,除了升级外还有什么办法能开smtp?
我百了个度 2012-11-29
  • 打赏
  • 举报
回复
第一句话就报出来了错误,不能连接到126邮箱服务器
a742358491 2012-11-29
  • 打赏
  • 举报
回复
引用 2 楼 ww296346372 的回复:
服务器连接有问题,试试163和qq的
为什么126的会还有问题呢?
琼徒陌路 2012-11-29
  • 打赏
  • 举报
回复
服务器连接有问题,试试163和qq的

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧