我看了并测试了一下你的问题所在: 第一、在msg.setSentDate(new Date());后加上msg.saveChanges(); 第二、要确保你的163用户的用户名和密码正确,以及你的发件人应该是你所用的163用户,并将Transport.send(msg);改成如下代码: Transport transport = session.getTransport("smtp"); transport.connect("smtp.163.com","mhbjava","107122521"); transport.sendMessage(msg,msg.getAllRecipients()); transport.close();第三、最主要的原因是你把sendmail.setHost("mail.163.com");写错了,应该是sendmail.setHost("smtp.163.com");第四、不要重复用同个用户发邮件,要不不断的发送,如果是成功的,几次后,163自动会将此发件人邮件阻止,导致以后就发不出去了。将提示 Your message was blocked by NetEase...... 等错误提示!第五、你可以试一下:)
javax.mail.MessagingException: Unknown SMTP host: smtp.163.com; nested exception is: java.net.UnknownHostException: smtp.163.com at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:865) at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:156) at javax.mail.Service.connect(Service.java:234) at javax.mail.Service.connect(Service.java:135) at test.Mail.sendMail(Mail.java:174) at test.Mail.main(Mail.java:208) java.net.UnknownHostException: smtp.163.com at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:153) at java.net.Socket.connect(Socket.java:452) at java.net.Socket.connect(Socket.java:402) at java.net.Socket.<init>(Socket.java:309) at java.net.Socket.<init>(Socket.java:124) at com.sun.mail.util.SocketFetcher.getSocket0(SocketFetcher.java:131) at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:113) at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:836) at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:156) at javax.mail.Service.connect(Service.java:234) at javax.mail.Service.connect(Service.java:135) at test.Mail.sendMail(Mail.java:174) at test.Mail.main(Mail.java:208) 我试了,还是这个问题,可能是代理的问题。
第一、在msg.setSentDate(new Date());后加上msg.saveChanges();
第二、要确保你的163用户的用户名和密码正确,以及你的发件人应该是你所用的163用户,并将Transport.send(msg);改成如下代码: Transport transport = session.getTransport("smtp");
transport.connect("smtp.163.com","mhbjava","107122521");
transport.sendMessage(msg,msg.getAllRecipients());
transport.close();第三、最主要的原因是你把sendmail.setHost("mail.163.com");写错了,应该是sendmail.setHost("smtp.163.com");第四、不要重复用同个用户发邮件,要不不断的发送,如果是成功的,几次后,163自动会将此发件人邮件阻止,导致以后就发不出去了。将提示 Your message was blocked by NetEase...... 等错误提示!第五、你可以试一下:)
nested exception is:
java.net.UnknownHostException: smtp.163.com
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:865)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:156)
at javax.mail.Service.connect(Service.java:234)
at javax.mail.Service.connect(Service.java:135)
at test.Mail.sendMail(Mail.java:174)
at test.Mail.main(Mail.java:208)
java.net.UnknownHostException: smtp.163.com
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:153)
at java.net.Socket.connect(Socket.java:452)
at java.net.Socket.connect(Socket.java:402)
at java.net.Socket.<init>(Socket.java:309)
at java.net.Socket.<init>(Socket.java:124)
at com.sun.mail.util.SocketFetcher.getSocket0(SocketFetcher.java:131)
at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:113)
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:836)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:156)
at javax.mail.Service.connect(Service.java:234)
at javax.mail.Service.connect(Service.java:135)
at test.Mail.sendMail(Mail.java:174)
at test.Mail.main(Mail.java:208)
我试了,还是这个问题,可能是代理的问题。