📄 mcomposite.java
字号:
/*
* This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/).
*/
package ch05.module;
import java.sql.*;
import java.util.*;
import java.text.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.servlet.http.*;
import ch05.*;
/**
* 针对写邮件页面的后台处理类
* @author ShenYK
* @version 1.0
*/
public class MComposite
{
//发送邮件,最后一个参数的意思是用来删除发件箱中的邮件(如果有的话)
public boolean sendMail ( HttpSession mySession,
String sReceiver,
String sSubject,
String sContent,
String sSaveTime )
{
//设置用户信息用
Hashtable myValues = (Hashtable)mySession.getAttribute(CommonConst.VIEWID_SENDBOXDETAIL);
myValues.put( "receiver", sReceiver );
myValues.put( "subject", sSubject );
myValues.put( "content", sContent );
myValues.put( "saveTime", sSaveTime );
String sHost = "";
String sUser = "";
String sPass = "";
String sAddress = "";
//尝试查找用户邮箱设置
try
{
//载入MySQL的JDBC驱动类
Class.forName(CommonConst.DB_DRIVER_CLASSNAME);
//获得数据库连接
Connection conn = DriverManager.getConnection( CommonConst.DB_CONN_STRING );
Statement stmt = null;
ResultSet rs = null;
String sUsername = (String)mySession.getAttribute("username");
try
{
//检查数据库中是否已经有该用户的smtp邮箱设置
stmt = conn.createStatement();
//执行SQL语句
String sQuery = "select * from mail_setting where username='" + sUsername + "'";
rs = stmt.executeQuery( sQuery );
if (rs.next() )
{
sHost = rs.getString(5);
sUser = rs.getString(6);
sPass = rs.getString(7);
sAddress = 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", sHost );
props.put("mail.smtp.auth","true");
MimeMessage message = new MimeMessage( session );
message.setFrom( new InternetAddress( sAddress ) );
message.addRecipient( Message.RecipientType.TO,
new InternetAddress( sReceiver ) );
message.setSubject( sSubject );
message.setText( sContent );
message.saveChanges();
//发送邮件
Transport transport = session.getTransport("smtp");
transport.connect(sHost, sUser, sPass);
transport.sendMessage(message, message.getAllRecipients());
transport.close();
//如果发送成功,则从发件箱中删除
String sDeleteQuery = "delete from sendbox where username='" + sUsername + "' and "
+ "save_time='" + sSaveTime + "' ";
stmt.executeUpdate( sDeleteQuery );
}
catch(Exception e)
{
e.printStackTrace();
mySession.setAttribute("errMsg","发送邮件时出现错误!请确认您的邮箱设置无误!");
return false;
}
finally
{
try
{
rs.close();
stmt.close();
}catch(Exception ex)
{
}
}
}catch(Exception ex)
{
ex.printStackTrace();
mySession.setAttribute("errMsg","发送邮件时出现错误!请联系系统维护人员。");
return false;
}
return true;
}
//保存邮件,最后一个参数的意思是用来删除发件箱中的原先的邮件(如果有的话)
public boolean saveMail ( HttpSession mySession,
String sReceiver,
String sSubject,
String sContent,
String sSaveTime )
{
//设置用户信息用
Hashtable myValues = (Hashtable)mySession.getAttribute(CommonConst.VIEWID_SENDBOXDETAIL);
myValues.put( "receiver", sReceiver );
myValues.put( "subject", sSubject );
myValues.put( "content", sContent );
//尝试数据库连接
try
{
//载入MySQL的JDBC驱动类
Class.forName(CommonConst.DB_DRIVER_CLASSNAME);
//获得数据库连接
Connection conn = DriverManager.getConnection( CommonConst.DB_CONN_STRING );
Statement stmt = null;
ResultSet rs = null;
String sUsername = (String)mySession.getAttribute("username");
//获得当前时间
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
String sNewSaveTime = sdf.format( new java.util.Date(System.currentTimeMillis()) );
try
{
conn.setAutoCommit(false);
//准备往数据库中进行插入
stmt = conn.createStatement();
//发件箱中删除旧的邮件
String sDeleteQuery = "delete from sendbox where username='" + sUsername + "' and "
+ "save_time='" + sSaveTime + "' ";
stmt.executeUpdate( sDeleteQuery );
//插入SQL语句
String sInsertQuery = "insert into sendbox values('" + sUsername + "', '"
+ sReceiver + "', '"
+ sSubject + "', '"
+ sContent + "', '"
+ sNewSaveTime +"') ";
stmt.executeUpdate( sInsertQuery );
conn.commit();
conn.setAutoCommit(true);
}
catch(Exception e)
{
conn.rollback();
e.printStackTrace();
mySession.setAttribute("errMsg","保存邮件时出现错误!请联系系统维护人员。");
return false;
}
finally
{
try
{
rs.close();
stmt.close();
}catch(Exception ex)
{
}
}
}catch(Exception ex)
{
ex.printStackTrace();
mySession.setAttribute("errMsg","保存邮件时出现错误!请联系系统维护人员。");
return false;
}
return true;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -