<%
String host = "live.cn";//邮箱服务器
String user = "********";//邮箱名 
String password = "*******";//密码
%> <%

String tto = request.getParameter("to");//对方地址
String ttitle = request.getParameter("title");//文件标题
String emailtype = request.getParameter("emailtype");//获取email类型 

String tcontent = request.getParameter("content");//内容
String tfj1 = request.getParameter("fj1");//附近名
String tfj2 = request.getParameter("fj2");//附件名
Properties props = new Properties();

props.put("mail.transport.protocol", "smtp");
props.put("mail.smtp.host", "localhost");

props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); 
                props.setProperty("mail.smtp.socketFactory.fallback", "false"); 
                props.setProperty("mail.smtp.port", "465"); 
                props.setProperty("mail.smtp.socketFactory.port", "465"); 

Session s = Session.getInstance(props);
s.setDebug(true);
                
MimeMessage message = new MimeMessage(s);
//给消息对象设置发件人/收件人/主题/发信时间 
InternetAddress from = new InternetAddress(user + "@" + host);
message.setFrom(from);
InternetAddress to = new InternetAddress(tto);
message.setRecipient(Message.RecipientType.TO, to);
message.setSubject(ttitle);
Multipart mm = new MimeMultipart();//新建一个MimeMultipart对象用来存放多个BodyPart对象 
//设置信件文本内容 
BodyPart mdp = new MimeBodyPart();//新建一个存放信件内容的BodyPart对象 
mdp.setContent(tcontent, emailtype + ";charset=gb2312");//给BodyPart对象设置内容和格式/编码方式 
mm.addBodyPart(mdp);//将含有信件内容的BodyPart加入到MimeMultipart对象中 
//设置信件的附件1(自定义附件:直接将所设文本内容加到自定义文件中作为附件发送) 
DataHandler dh = new DataHandler(tfj1,
"text/plain;charset=gb2312");
//新建一个DataHandler对象,并设置其内容和格式/编码方式 
if (tfj1.length() > 0) {
mdp = new MimeBodyPart();//新建一个存放附件的BodyPart 
mdp.setFileName("text.txt");//加上这句将作为附件发送,否则将作为信件的文本内容 
mdp.setDataHandler(dh);//给BodyPart对象设置内容为dh 
mm.addBodyPart(mdp);//将含有附件的BodyPart加入到MimeMultipart对象中 
}
//设置信件的附件2(用本地上的文件作为附件) 
if (tfj2.length() > 0) {
mdp = new MimeBodyPart();
FileDataSource fds = new FileDataSource(tfj2);
dh = new DataHandler(fds);
int ddd = tfj2.lastIndexOf("\\");
String fname = tfj2.substring(ddd + 1);//提取文件名 
//String ffname = new String(fname.getBytes("gb2312"), 
//"ISO8859-1");//处理文件名是中文的情况] 
String ffname = javax.mail.internet.MimeUtility
.encodeText(fname);
mdp.setFileName(ffname);//可以和原文件名不一致,但最好一样 
mdp.setDataHandler(dh);
mm.addBodyPart(mdp);
}
message.setContent(mm);//把mm作为消息对象的内容 
message.saveChanges();
Transport transport = s.getTransport("smtp");
transport.connect("smtp." + host, user, password);
transport.sendMessage(message, message.getAllRecipients());
transport.close();
%>
出现的异常
=========================================================================================
严重: Servlet.service() for servlet jsp threw exception
javax.mail.MessagingException: Could not connect to SMTP host: smtp.live.cn, port: 465;
  nested exception is:
java.io.IOException: Couldn't connect using "javax.net.ssl.SSLSocketFactory" socket factory to host, port: smtp.live.cn, 465; Exception: java.lang.reflect.InvocationTargetException
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:911)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:158)
at javax.mail.Service.connect(Service.java:233)
at javax.mail.Service.connect(Service.java:134)
at org.apache.jsp.jml.sendmail_jsp._jspService(sendmail_jsp.java:149)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)===========================================================
在线等答案,希望哪位大虾能帮帮忙,我被这东西折腾好几天了,郁闷呀,先在这里谢谢

解决方案 »

  1.   

    1.查本机25端口是否被关闭。
    2.props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");这句不明白何意,去掉如何?我的邮件发送组件中就没有这句。
    3.有可能是smtp填错了,或是当前使用的账号未开通smtp服务。(Could not connect to SMTP host: smtp.live.cn
    或者可能都不是这些问题,望楼主解决后记得贴上解决方法,谢谢。
      

  2.   

    估计就是邮件服务器没有连接上,你先确定下
    [color=#FF6600]String host = "live.cn";//邮箱服务器 
    String user = "********";//邮箱名 
    String password = "*******";//密码 
    你这3句到底对不对? 还有你的host你写的是域名还是主机名,正常情况下,应该是你的邮件服务器的主机名。还有就是下面几句话
    props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); 
                    props.setProperty("mail.smtp.socketFactory.fallback", "false"); 
                    props.setProperty("mail.smtp.port", "465"); 
                    props.setProperty("mail.smtp.socketFactory.port", "465"); 
    请跟踪代码确认是否都set成功,是否有空值set进去了,你这个程序是否用到spring的注入。[/color]
      

  3.   

    还有我想说,不要把java代码写在jsp页面上
      

  4.   

    先谢谢两位,我这是在做一个java mail的测试,所以代码写的随便的。我想回答第一位的是:我用的是hotmail邮箱,她所需要的端口为:465与25没有关系,hotmail是有smtp功能的,好像是免费的。
    还有就是:密码和用户名不存在错误。
      

  5.   

    进入邮箱   邮箱设置
    POP/SMTP设置
     开启看是不是这里的原因
      

  6.   

    javax.mail.MessagingException: Could not connect to SMTP host: smtp.live.cn, port: 465; 你的本机的邮件服务开启了吗?
      
      

  7.   

    props.put("mail.smtp.host", "localhost"); props.setProperty("mail.smtp.port", "465"); 
                    
      

  8.   

    哎,这问题还是没有解决呀,大虾们,SOS 
      

  9.   

    props.put("mail.smtp.host", "localhost"); 
    你本机有SMTP服务器?
    hotmail的SMTP服务器:smtp.live.com ,端口25或者587。(据说,没考证,自己上hotmail查。)