问题如标题,一个servlet既要保存数据,又要实现发邮件功能,我是用一个JSP页面来录入数据,通过javascript来得到录入数据,在通过IFRAME来隐藏一个form表单:( <IFRAME id=hiddenframesub src="basesubmit.jsp" width=0 height=0>
</IFRAME>)
basesubmit.jsp代码如下:
<form name="form1" method="post" action="Mail">
<input name="user_email" type="hidden" />
<input name="bill_list" type="hidden" />
<input name="email_pass" type="hidden" />
<input name="email_text" type="hidden" />
<input name="tcontent" type="hidden" />
<input name="js_sql" type="hidden" />
<input name="update_id" type="hidden" />
</form>
其中servlet的代码如下:
import java.io.IOException;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.util.Properties;import java.util.*;
import java.sql.*;
import java.text.SimpleDateFormat;
import java.net.URLDecoder;import javax.mail.Address;
import javax.mail.Message;
import javax.mail.Message.RecipientType;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class Mail extends HttpServlet
{
private static final String CONTENT_TYPE = "text/html; charset=GB2312"; public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
{
response.setContentType("text/html; charset=GB2312");
PrintWriter out = response.getWriter();
String host = "smtp.gmail.com";
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
String select_email = request.getParameter("bill_list").trim();
String email_text = request.getParameter("email_text").trim();
String email_from = request.getParameter("user_email").trim();
String email_pass = request.getParameter("email_pass").trim();
String js_sql = request.getParameter("js_sql").trim();
String update_id = request.getParameter("update_id").trim();
//URL传参
js_sql=URLDecoder.decode(js_sql,"UTF-8");
String tcontent = "文档类型:部品试流通知跟踪单";
//操作时间
String curtime;
java.util.Date curdate = new java.util.Date();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
curtime = format.format(curdate);
//结束操作时间
Connection conn=null;
Statement sta=null;
//Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//conn=DriverManager.getConnection("jdbc:odbc:jiedai","","");
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
conn=DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=zszx;user=sa;password=sa");
Statement sta=conn.createStatement();
sta.executeUpdate(js_sql);
try
{
Properties props = System.getProperties();
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.host", host);
props.put("mail.smtp.user", email_from);
props.put("mail.smtp.password", email_pass);
props.put("mail.smtp.port", "587");
props.put("mail.smtp.auth", "email_pass");
Session s = Session.getInstance(props, null);
Message message = new MimeMessage(s);
Address from = new InternetAddress(email_from);
message.setFrom(from);
String[] tto = select_email.split(",");
for (int i = 0; i < tto.length; i++) {
System.out.println("tto[" + i + "]" + tto[i]);
Address to = new InternetAddress(tto[i]);
message.setRecipient(Message.RecipientType.TO, to);
message.setSubject(email_text);
message.setText(tcontent + "登录地址:"+basePath);
message.saveChanges();
Transport transport = s.getTransport("smtp");
transport.connect(host, email_from, email_pass);
transport.sendMessage(message, message.getAllRecipients());
transport.close();
System.out.println("发送成功!");
out.println("发送成功!");
}
}
catch (Exception e)
{
e.printStackTrace();
}
} protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
}其中上面的servlet不能实现数据保存和发送邮件,但是把这个servlet分为二个servlet就能保存数据和发送邮件。但是一个界面不能有二个form吖?这该怎么办啊?
能否帮忙看一下上面的servlet哪错了?
</IFRAME>)
basesubmit.jsp代码如下:
<form name="form1" method="post" action="Mail">
<input name="user_email" type="hidden" />
<input name="bill_list" type="hidden" />
<input name="email_pass" type="hidden" />
<input name="email_text" type="hidden" />
<input name="tcontent" type="hidden" />
<input name="js_sql" type="hidden" />
<input name="update_id" type="hidden" />
</form>
其中servlet的代码如下:
import java.io.IOException;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.util.Properties;import java.util.*;
import java.sql.*;
import java.text.SimpleDateFormat;
import java.net.URLDecoder;import javax.mail.Address;
import javax.mail.Message;
import javax.mail.Message.RecipientType;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class Mail extends HttpServlet
{
private static final String CONTENT_TYPE = "text/html; charset=GB2312"; public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
{
response.setContentType("text/html; charset=GB2312");
PrintWriter out = response.getWriter();
String host = "smtp.gmail.com";
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
String select_email = request.getParameter("bill_list").trim();
String email_text = request.getParameter("email_text").trim();
String email_from = request.getParameter("user_email").trim();
String email_pass = request.getParameter("email_pass").trim();
String js_sql = request.getParameter("js_sql").trim();
String update_id = request.getParameter("update_id").trim();
//URL传参
js_sql=URLDecoder.decode(js_sql,"UTF-8");
String tcontent = "文档类型:部品试流通知跟踪单";
//操作时间
String curtime;
java.util.Date curdate = new java.util.Date();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
curtime = format.format(curdate);
//结束操作时间
Connection conn=null;
Statement sta=null;
//Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//conn=DriverManager.getConnection("jdbc:odbc:jiedai","","");
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
conn=DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=zszx;user=sa;password=sa");
Statement sta=conn.createStatement();
sta.executeUpdate(js_sql);
try
{
Properties props = System.getProperties();
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.host", host);
props.put("mail.smtp.user", email_from);
props.put("mail.smtp.password", email_pass);
props.put("mail.smtp.port", "587");
props.put("mail.smtp.auth", "email_pass");
Session s = Session.getInstance(props, null);
Message message = new MimeMessage(s);
Address from = new InternetAddress(email_from);
message.setFrom(from);
String[] tto = select_email.split(",");
for (int i = 0; i < tto.length; i++) {
System.out.println("tto[" + i + "]" + tto[i]);
Address to = new InternetAddress(tto[i]);
message.setRecipient(Message.RecipientType.TO, to);
message.setSubject(email_text);
message.setText(tcontent + "登录地址:"+basePath);
message.saveChanges();
Transport transport = s.getTransport("smtp");
transport.connect(host, email_from, email_pass);
transport.sendMessage(message, message.getAllRecipients());
transport.close();
System.out.println("发送成功!");
out.println("发送成功!");
}
}
catch (Exception e)
{
e.printStackTrace();
}
} protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
}其中上面的servlet不能实现数据保存和发送邮件,但是把这个servlet分为二个servlet就能保存数据和发送邮件。但是一个界面不能有二个form吖?这该怎么办啊?
能否帮忙看一下上面的servlet哪错了?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货