一个mail问题,帮帮我呀!!
我在servlet中取得变量值,同时调用jsendmail方法发送出去。可是有以下问题,当servlet单独使用时正常,jsendmail单独使用也正常,可是写到一起时,编译也没问题,运行时确报错请各位指教,万分感谢
--servlet-------------------------------
package netftp;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import javax.xml.parsers.*;
import org.w3c.dom.*;
import org.xml.sax.*;
import nethd.nethdsystem.NetHDBase;
import nethd.netftp.*;
import java.lang.*;
import java.sql.*;
import java.sql.Date;
import nethd.nethduser.*;
import nethd.nethdsystem.*;
import sun.net.smtp.*;
public class ForgotPws extends HttpServlet {
private static final String CONTENT_TYPE = "text/html; charset=GBK";
/**Initialize global variables*/
public void init() throws ServletException {
}
/**Process the HTTP Get request*/
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//doPost(request,response);
}
/**Process the HTTP Post request*/
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType(CONTENT_TYPE);
PrintWriter out = response.getWriter();
out.println("ForgotPws test");
String xmlData="";
String returnXmlData="";
String returnValue="";
try
{
//define variable
String backPassword="";
String backMail="";
String tempPass="";
String Answer="";
String userName="";
int Times=0;
//½âÎöMXLÎļþ
ServletInputStream in=request.getInputStream();
int dataLength=request.getContentLength();
byte[] xmlDataBytes=new byte[dataLength];
int read_=in.read(xmlDataBytes,0,dataLength);
//change code
xmlData=new String(xmlDataBytes,"GB2312");
//parse XML
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder=factory.newDocumentBuilder();
StringReader sr = new StringReader(xmlData);
InputSource iSrc = new InputSource(sr);
Document doc=builder.parse(iSrc);
doc.normalize();
NodeList links =doc.getElementsByTagName("xmlData");
Element link=(Element) links.item(0);
String Function=link.getElementsByTagName("Function").item(0).getFirstChild().getNodeValue();
Times=Integer.parseInt(link.getElementsByTagName("Times").item(0).getFirstChild().getNodeValue());
Answer=link.getElementsByTagName("Answer").item(0).getFirstChild().getNodeValue();
userName=link.getElementsByTagName("UserName").item(0).getFirstChild().getNodeValue();
//connect dabase
Connection conn=null;
NetHDBase cBase=new NetHDBase();
conn = cBase.makeConnect();
NetHDUserInFoChick cUser = new NetHDUserInFoChick();
int ii=0;
if((cUser.checkUserByQuest(conn,Answer,userName)))
{
System.out.println("Ö±½ÓÏÔʾÃÜÂë");
backPassword=cUser.backUserPasswordByQuest(conn,Answer,userName);
out.println("<? Xml version=\"1.0\">");
out.println("<xmlData>");
out.println("<Function>RequestPws</Function>");
out.println("<Error>"+backPassword+"</Error>");
out.println("</xmlData>");
}
else
{
if (Times<3)
{
//password is error
System.out.println("Answer is error");
out.println("<? Xml version=\"1.0\">");
out.println("<xmlData>");
out.println("<Function>RequestPws</Function>");
out.println("<Error>1</Error>");
out.println("</xmlData>");
}
else
{
backPassword=cUser.backUserPasswordByQuest(conn,Answer,userName);
backMail=cUser.backUserEmailByQuest(conn,Answer,userName);
System.out.println("backPassword"+backPassword);
System.out.println("backMail"+backMail);
out.println("<? Xml version=\"1.0\">");
out.println("<xmlData>");
out.println("<Function>RequestPws</Function>");
out.println("<Error>0</Error>");
out.println("</xmlData>");
System.out.println(backMail);
System.out.println(backPassword);
//------------------------------------------------------------
JSendMail sendmail=new JSendMail(backMail,"webmaster@zyx.e-office.com.cn","smtp.e-office.com.cn",backPassword);
if (sendmail.startSend())
{
System.out.println("ok");
}
else
{
System.out.println("fail");
}
//-------------------------------------------------------------
}
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
/**Clean up resources*/
public void destroy() {
}
}
---jsendmail-----------------------------
package netftp;
/**
* Title:
* Description:
* Copyright: Copyright (c) 2001
* Company:
* @author
* @version 1.0
*/
import java.util.* ;
import java.io.* ;
import javax.mail.* ;
import javax.mail.internet.* ;
import javax.activation.* ;
public class JSendMail
{
//¶¨ÒåÊÕ¼þÈË¡¢·¢ËÍÈË¡¢Ö÷ÌâµÈ
String to="",from="",host="",filename="",messagetext="",subject="";
boolean debug=false;
//±£´æ·¢Ë͵ÄÎļþÃû
Vector vfile = new Vector(10,10);
//±£´æ·¢Ë͵ÄÕýÎÄ
Vector vmsg = new Vector(10,10);
public JSendMail() {}
public JSendMail(String to,String from,String smtpServer,String subject)
{
//³õʼ»¯ÊÕ¼þÈË¡¢·¢ËÍÈË¡¢Ö÷Ìâ
this.to=to;
this.from=from;
this.host=smtpServer;
this.subject=subject;
}
//ÊÕ¼¯¸½¼ÓÎļþ
public void attachfile(String fname)
{
vfile.addElement(fname);
}
//ÊÕ¼¯ÓʼþÕýÎÄ
public void setMessage(String msg)
{
vmsg.addElement(msg);
}
//ÉèÖõ÷ÊÔ±êÖ¾
public void setDebug(boolean debug)
{
this.debug=debug;
}
//Óʼþ·¢Ëͺ¯Êý
public boolean startSend()
{
Properties props = System.getProperties();
props.put("mail.smtp.host", host);
Session session=Session.getDefaultInstance(props, null);
session.setDebug(debug);
try
{
//´´½¨Ò»¸öÏûÏ¢,²¢³õʼ»¯¸ÃÏûÏ¢µÄ¸÷ÏîÔªËØ
MimeMessage msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(from));
InternetAddress[] address={new InternetAddress(to)};
msg.setRecipients(Message.RecipientType.TO,address);
msg.setSubject(subject);
//°Ñmessage part¼ÓÈëд´½¨µÄMultipart
Multipart mp = new MimeMultipart();
// ÓʼþÄÚÈݵĵÚÒ»²¿·Ö
Enumeration emsg=vmsg.elements();
while(emsg.hasMoreElements())
{
messagetext=emsg.nextElement().toString();
MimeBodyPart mbp1=new MimeBodyPart();
mbp1.setText(messagetext);
mp.addBodyPart(mbp1);
}
vmsg.removeAllElements();
// ÓʼþÄÚÈݵĵڶþ²¿·Ö
Enumeration efile=vfile.elements();
while(efile.hasMoreElements())
{
MimeBodyPart mbp2=new MimeBodyPart();
filename=efile .nextElement().toString();
FileDataSource fds=new FileDataSource(filename);
mbp2.setDataHandler(new DataHandler(fds));
mbp2.setFileName(fds.getName());
mp.addBodyPart(mbp2);
}
vfile.removeAllElements();
// °ÑMultiPart¼ÓÈëÓʼþ
msg.setContent(mp);
// ÉèÖÃÓʼþÍ·µÄ·¢ËÍÈÕÆÚ
msg.setSentDate(new Date());
// ·¢ËÍÓʼþ
Transport.send(msg);
}
catch (MessagingException mex)
{
mex.printStackTrace();
Exception ex = null;
if ((ex=mex.getNextException())!=null)
{
ex.printStackTrace();
}
return false;
}
return true;
}//end public void startSend()
}
---报错信息------------------------------
n port 7001>
javax.mail.SendFailedException: Sending failed;
nested exception is:
javax.mail.MessagingException: Unknown SMTP host: smtp.e-office.com.cn;
nested exception is:
java.net.UnknownHostException: smtp.e-office.com.cn
at javax.mail.Transport.send0(Transport.java:218)
at javax.mail.Transport.send(Transport.java:80)
at netftp.JSendMail.startSend(JSendMail.java:94)
at netftp.ForgotPws.doPost(ForgotPws.java:129)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
pl.java:213)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppSe
rvletContext.java:1265)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestIm
pl.java:1631)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:137)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
javax.mail.MessagingException: Unknown SMTP host: smtp.e-office.com.cn;
nested exception is:
java.net.UnknownHostException: smtp.e-office.com.cn
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:693)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:16
8)
at javax.mail.Service.connect(Service.java:227)
at javax.mail.Service.connect(Service.java:131)
at javax.mail.Service.connect(Service.java:87)
at com.sun.mail.smtp.SMTPTransport.connect(SMTPTransport.java:105)
at javax.mail.Transport.send0(Transport.java:162)
at javax.mail.Transport.send(Transport.java:80)
at netftp.JSendMail.startSend(JSendMail.java:94)
at netftp.ForgotPws.doPost(ForgotPws.java:129)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
pl.java:213)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppSe
rvletContext.java:1265)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestIm
pl.java:1631)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:137)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
fail