⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mcomposite.java

📁 网络邮件系统
💻 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 + -