一下是发送邮件的类,我想把邮件的发送时间定制在晚上八点以后,不知道怎么修改这里 //设置邮件发送时间
                msg.setSentDate(new java.util.Date());
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.Connection;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.util.Locale;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeUtility;
import javax.mail.Session;
import java.util.Properties;
import javax.mail.internet.MimeMessage;
import javax.mail.Message;
import java.sql.*;
import oracle.sql.*;
import oracle.jdbc.driver.*;
import java.text.DecimalFormat;
import java.math.BigDecimal;
public class SendEmail {
    public static void Emain(String squono,String checkflg,
                             String itemno,Double x_old_quoprc,String compno,String curstyle) {
        String ch_compno = "";
        String ch_itemno = "";
        String old_quoprc = "";
        String new_quoprc  = "";
        String datetime = "";
        String ch_squono = "";
        String o_ch_curstyle= "";
        String n_ch_curstyle= "";
        String old_ch_curstyle = "";//货币号
        String new_ch_curstyle = "";
        Connection con = null;
        Statement stm = null;
        String content= "";
  
        if(checkflg.equals("1")){
        String ClassForName = "oracle.jdbc.driver.OracleDriver";
        String ServerNddb = "jdbc:oracle:thin:@dataserver:1521:server";
        String User = "NGSoft";
        String Pwd = "A3.server";
        String compname = "";//供应商name
        String itemname = "";//物料name
        String descript = "";//规格
        String descript1="";//描述
        String newoldprc = "";
        
        String cur = "";
        if(curstyle==null) {
          curstyle = "";
         }
         if(curstyle.equals("")){
          cur = "人民币";
         }
         if(curstyle.equals("01")){
          cur= "港币";
         }
         if(curstyle.equals("02")){
          cur="美金";
         }
         
        BigDecimal forprc = new BigDecimal(x_old_quoprc.toString());
        BigDecimal one = new BigDecimal("1");
        newoldprc = forprc.toString();
        try {
            Class.forName(ClassForName);
            con = DriverManager.getConnection(ServerNddb,User,Pwd);
            con.setAutoCommit(false);
            stm = con.createStatement();
            String sql0 = "select ch_squono,ch_itemno,ch_compno,old_quoprc,new_quoprc,datetime,old_huobi,new_huobi"+
                          " from NG0001.cg_pr_change"+
                          " where ch_squono='"+squono+"'"+
                          " and datetime = "+
                          " (select max(datetime) from NG0001.cg_pr_change where ch_squono='"+squono+"')";
            ResultSet rs0 = stm.executeQuery(sql0);
            if(rs0.next()){
                ch_compno = rs0.getString("ch_compno");
                ch_itemno = rs0.getString("ch_itemno");
                old_quoprc =rs0.getString("old_quoprc");
                new_quoprc =rs0.getString("new_quoprc");
                datetime = rs0.getString("datetime");
                o_ch_curstyle = rs0.getString("old_huobi");
                n_ch_curstyle = rs0.getString("new_huobi");
            }
            if(o_ch_curstyle==null){
                o_ch_curstyle="";
               }
              if(o_ch_curstyle.equals("")){
                    old_ch_curstyle="人民币";
                }
               if(o_ch_curstyle.equals("01")){
                    old_ch_curstyle="港币";
                }
                
               if(o_ch_curstyle.equals("02")){
                    old_ch_curstyle="美元";
                }
                
              if(n_ch_curstyle==null){
                  n_ch_curstyle="";
                }
                if(n_ch_curstyle.equals("")){
                    new_ch_curstyle="人民币";
                }
                if(n_ch_curstyle.equals("01")){
                    new_ch_curstyle="港币";
                }
                  if(n_ch_curstyle.equals("02")){
                    new_ch_curstyle="美元";
                }
                
           
            if(!ch_itemno.equals("")){
                String sql =
                        "select compname from NG0001.enterprise where compno = '"+ch_compno+"'";
                ResultSet rs1 = stm.executeQuery(sql);
                if (rs1.next()) {
                    compname = rs1.getString("compname");
                }
                String sql1 =
                        "select itemname,descript,descript1 from NG0001.itemdata where itemno = '"+ch_itemno+"'";
                ResultSet rs2 = stm.executeQuery(sql1);
                if (rs2.next()) {
                    itemname = rs2.getString("itemname");
                    descript = rs2.getString("descript");
                    descript1= rs2.getString("descript1");
                }
                 rs0.close();
                        rs1.close();
                        rs2.close();
                        stm.close();
            }else{
                String sql =
                       "select compname from NG0001.enterprise where compno = '" +
                       compno + "'";
               System.out.println("找出企业名称" + sql);
               ResultSet rs1 = stm.executeQuery(sql);
               if (rs1.next()) {
                   compname = rs1.getString("compname");
               }
               String sql1 =
                       "select itemname,descript,descript1 from NG0001.itemdata where itemno = '" +
                       itemno + "'";
               ResultSet rs2 = stm.executeQuery(sql1);
               if (rs2.next()) {
                   itemname = rs2.getString("itemname");
                   descript = rs2.getString("descript");
                   descript1= rs2.getString("descript1");
               }
                rs0.close();
                  rs1.close();
                  rs2.close();
                  stm.close();
            }
        } catch (Exception ex) {
            System.out.println("出问题了: "+ex.getMessage());
        }
        String from = "[email protected]"; //发件人
        String[] recipients = new String[5]; //收件人,可以多个
        recipients[0] = "[email protected]";//李鹏飞
        recipients[1] = "[email protected]";//谢开鑫
        //recipients[2] = "[email protected]";//xuyuqiao
        recipients[2] = "[email protected]";//马燕
        recipients[3] = "[email protected]";//Ivan
        recipients[4] = "[email protected]";//Jessie Ren
        String subject = "采购价更新信息"; //邮件主题
        if(!ch_itemno.equals("")){
         content = "原有物料价格发生变更:"+"\n 物料编号:" + ch_itemno + "("+itemname+")"+ "\n    规格:"+ descript +"\n 描述:"+ descript1 +"\n  供应商NO:" + ch_compno + "("+compname+")"+
                         "\n 原始价格: " +old_quoprc+"("+old_ch_curstyle+")"+"\n 更新后的价格:" + new_quoprc + "("+new_ch_curstyle+")"+"\n 更新日期: " +
                         datetime; //邮件内容
                         }else{
         content = "这是新增的物料价格信息:"+"\n 物料编号:" + itemno + "("+itemname+")"+ "\n     规格:"+ descript +"\n 描述:"+ descript1 +"\n 供应商NO:" + 
                          compno + "("+compname+")"+"\n 价格:" +newoldprc+"("+cur+")"; //邮件内容
                         }
        String contentType = "text"; //邮件内容格式(文本或html)
        String fileName = null; //附件文件名(目前只提供一个附件)
        if (recipients != null && recipients.length > 0) {
            Properties props = new Properties();
            //设置邮件服务器地址,连接超时时限等信息
            props.put("mail.smtp.host", "172.18.2.6"); //邮件服务器
            props.put("mail.smtp.connectiontimeout", "10000"); //
            props.put("mail.smtp.timeout", "10000"); //
            //创建缺省的session对象
            Session session = Session.getDefaultInstance(props, null);
            //创建message对象
            Message msg = new MimeMessage(session);
            //设置发件人和收件人
            try {
                InternetAddress addressFrom = new InternetAddress(from);
                msg.setFrom(addressFrom);
                InternetAddress[] addressTo = new InternetAddress[recipients.
                                              length];
                for (int i = 0; i < recipients.length; i++) {
                    addressTo[i] = new InternetAddress(recipients[i]);
                }
                msg.setRecipients(Message.RecipientType.TO, addressTo);
                //设置邮件标题,中文编码
                subject = MimeUtility.encodeText(new String(subject.getBytes(),
                        "GB2312"), "GB2312", "B");
                msg.setSubject(subject);
                //设置邮件内容,区分文本格式
                msg.setText(content);
                //设置邮件发送时间
                msg.setSentDate(new java.util.Date());
                //调用抽象类的静态方法send()发送邮件
                Transport.send(msg);
            } catch (Exception ex) {
            }
        }
    }
    }
}

解决方案 »

  1.   

    用TimerTask类,每隔24小时在8点以后发送邮件, 
           //设置发送时间在晚上8点以后
           Calendar calendar = Calendar.getInstance();
            calendar.set(Calendar.HOUR, 8);
            calendar.set(Calendar.MINUTE, 0);
            calendar.set(Calendar.SECOND, 0);
            calendar.set(Calendar.MILLISECOND, 0);
            
            TimerTask task = new TimerTask() {
                //发送邮件
                public void run() {
                     SendEmail.Emain(...);
                }
                
            };
            Timer timer = new Timer();
            //设置每天晚上8点发送一次
            timer.scheduleAtFixedRate(task, calendar.getTime(), 1000 * 3600 * 24);