java连接VPN 发送邮件

来源:互联网 发布:mac系统iso镜像百度云 编辑:程序博客网 时间:2024/06/11 18:23

系统中需要两个包

1:classes12.jar

 

classes12 自己找吧!!!

 

2:mail.jar

下载地址:http://hi.csdn.net/attachment/201103/21/0_1300695455MNRi.gif

下载后更名为 mail.jar

 

import java.util.Date;
import java.util.Properties;

import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.text.SimpleDateFormat;  
import java.util.Calendar;

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class SendMail {

 public static String mailAddress ="xxxx@163.com";
 public static String mailCount ="xxxx";
 public static String mailPassword ="xxxx";
 public static String mailServer ="smtp.163.com";
 public static String sendMail ="xxxx@gmai.com";


 /**
 * 发送简单邮件
 * @param str_from:发件人地址
 * @param str_to:收件人地址
 * @param str_title:邮件标题
 * @param str_content:邮件正文
 */
 public static boolean send(String str_from,String str_to,String str_title,String str_content) {
  // str_content="<a href='www.163.com'>html元素</a>"; //for testing send html mail!
  try {
   //建立邮件会话
   Properties props=new Properties(); //用来在一个文件中存储键-值对的,其中键和值是用等号分隔的,
   //存储发送邮件服务器的信息
   props.put("mail.smtp.host",mailServer);
   //同时通过验证
   props.put("mail.smtp.auth","true");
   //根据属性新建一个邮件会话
   Session s=Session.getInstance(props);
   s.setDebug(false); //有他会打印一些调试信息。

   //由邮件会话新建一个消息对象
   MimeMessage message=new MimeMessage(s);

   //设置邮件
   InternetAddress from= new InternetAddress(str_from); //pukeyouxintest2@163.com
   message.setFrom(from); //设置发件人的地址
   //
   // //设置收件人,并设置其接收类型为TO
   InternetAddress to=new InternetAddress(str_to); //pukeyouxintest3@163.com
   message.setRecipient(Message.RecipientType.TO, to);

   //设置标题
   message.setSubject(str_title); //java学习

   //设置信件内容
   // message.setText(str_content); //发送文本邮件 //你好吗?
   message.setContent(str_content, "text/html;charset=gbk"); //发送HTML邮件 //<b>你好</b><br><p>大家好</p>
   //设置发信时间
   message.setSentDate(new Date());

   //存储邮件信息
   message.saveChanges();

   //发送邮件
   Transport transport=s.getTransport("smtp");
   //以smtp方式登录邮箱,第一个参数是发送邮件用的邮件服务器SMTP地址,第二个参数为用户名,第三个参数为密码
   transport.connect(mailServer,mailCount,mailPassword);
   //发送邮件,其中第二个参数是所有已设好的收件人地址
   transport.sendMessage(message,message.getAllRecipients());
   transport.close();
   return true;
  } catch (Exception e) {
   e.printStackTrace();
   return false;
  }
 }


 public static boolean Runexec(String args,String isOk)
 {
  boolean runOK = false;
  Process process = null;
  BufferedReader br = null;
  String line = "";

  //"已连接"
  try
  {
   process = Runtime.getRuntime().exec(args);//"Rasdial nmtest /disconnet ");//cdsts1 nmdws");
   br = new BufferedReader(new InputStreamReader(process.getInputStream()));
   while ((line = br.readLine()) != null)
   {
    System.out.println(line);

    if (line.indexOf(isOk)>=0)
    {
     runOK = true;
    }
   }
   process.waitFor();
  }
  catch (Exception e){e.printStackTrace();}
  finally
  {
   if (br != null)
   {
    try {br.close();} catch (Exception e) { e.printStackTrace();}
   }
  }
 
  System.out.println(runOK);
  return runOK;
 }

 public static void main(String[] args) {
  String getEmail = "xxxx@xxxx.com";

  //初始化参数
  for (int iii = 0; iii < args.length ; iii++)
  {
   if (iii==0)mailAddress=args[iii];
   if (iii==1)mailCount=args[iii];
   if (iii==2)mailPassword=args[iii];
   if (iii==3)mailServer=args[iii];
   if (iii==4)getEmail=args[iii];
  }

  System.out.println("mailAddress="+mailAddress);
  System.out.println("mailCount="+mailCount);
  System.out.println("mailPassword="+mailPassword);
  System.out.println("mailServer="+mailServer);
  System.out.println("getEmail="+getEmail);

  //连接VPN
  int ErrCnt = 0;
  while (true)
  {
   ErrCnt = 0;
   System.out.println("----正在连接nmtest的VPN-----");
   while (Runexec("Rasdial nmtest cdsts1 nmdws","已连接") == false)
   {
    System.out.println("连接失败!");

    try{Thread.sleep(5000);}catch(Exception e){
     e.printStackTrace();}
    ErrCnt++;
    if (++ErrCnt > 3)break;
   }
   if (ErrCnt > 3)continue;
   System.out.println("连接成功!");

   System.out.println("----正在获取报表数据-----");

   SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月");      
   Calendar lastDate = Calendar.getInstance();  
   lastDate.set(Calendar.DATE,1);//设为当前月的1号  
   lastDate.add(Calendar.MONTH,-1);//减一个月,变为下月的1号  
    
   String str_ym=sdf.format(lastDate.getTime());

   String cont = "";
   while (cont == null || cont.equals(""))
   {
    try
    {
     cont = conn.getHTML(str_ym);
    }
    catch(Exception e)
    {
     e.printStackTrace();
    }
    if (cont == null || cont.equals(""))System.out.println("获取报表数据失败:");
    try{Thread.sleep(5000);}catch(Exception e){e.printStackTrace();}
    if (++ErrCnt > 3)break;
   }
   if (ErrCnt > 3)continue;
   System.out.println("获取报表数据成功!");

   //断开VPN
   System.out.println("----正在断开VPN-----");
   while (Runexec("Rasdial /DISCONNECT","命令已完成") == false)
   {
    System.out.println("断开VPN失败:");
    try{Thread.sleep(5000);}catch(Exception e){e.printStackTrace();}
   }
   System.out.println("断开VPN成功!");

   System.out.println("----正在发送邮件-----");
   //上Internet 发送邮件


   System.out.println("统计数据:"+str_ym + "");

   while (SendMail.send(mailAddress,getEmail,str_ym + "",cont)== false)
   {
    System.out.println("发送邮件失败:");
    try{Thread.sleep(5000);}catch(Exception e){e.printStackTrace();}
    ErrCnt++;
    if (++ErrCnt > 3)break;
   }
   if (ErrCnt > 3)continue;
   System.out.println("发送邮件成功,操作完成!");
   try{Thread.sleep(5000);}catch(Exception e){}

   return;
  }
 }
}

 

 

 

import java.lang.*;
import java.text.DateFormat;  
import java.text.ParsePosition;  
import java.text.SimpleDateFormat;  
import java.util.Calendar;  
import java.util.Date;  
import java.util.GregorianCalendar;  
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.DriverManager;
import java.sql.SQLException;


public class conn
{

 public static String getHTML(String cnDate)
 {

  String    drv=null;
  Connection conn=null;
  Statement   stmt=null;
  ResultSet   rs=null;
  int        rowcount=0;

  try
  {
   Class.forName("oracle.jdbc.driver.OracleDriver");
  }
  catch (java.lang.ClassNotFoundException e)
  {
   System.out.println(new Date().toString() + ":mydb(): " + e.getMessage());
  }

  try
  {
   conn = DriverManager.getConnection(
   "jdbc:oracle:thin:@IP:Port:SID", "NAME", "PWD");
  }
  catch (SQLException ex)
  {
   System.out.println(new Date().toString() + ":conn:"+ex.getMessage());
  }

  if (conn!=null)
   System.out.println(new Date().toString() + ":connection successful");
  else
   System.out.println(new Date().toString() + ":connection failure");

  try
  {
   stmt=conn.createStatement();
  }
  catch (SQLException ex)
  {
   System.out.println(new Date().toString() + ":createStatement();"+ex.getMessage());
  }


  String tmpsql = "";
  String resStr = "<TABLE style=/"font-size:14px/" border = 1 cellspacing=/"0/" cellpadding=/"0/">"
     +"<tr><td COLSPAN=25><H1>"+cnDate+"使用情况统计</H1></td></tr>";

  try
  {
 

   SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");      
   Calendar lastDate = Calendar.getInstance();  
   lastDate.set(Calendar.DATE,1);//设为当前月的1号  
   lastDate.add(Calendar.MONTH,-1);//减一个月,变为下月的1号  
    
   String str_ym=sdf.format(lastDate.getTime()); 

   tmpsql = "select * from dual";

   rs=stmt.executeQuery(tmpsql);

///////////////////////////////////////////////////
   try
   {
    String tmpstr2 ="";
    while (rs.next())
    {
     resStr +="<tr>";
     for (int iCnt = 1; iCnt <= 25; iCnt++)
     {
      tmpstr2 = rs.getString(iCnt);
      if (tmpstr2 == null)
      {
       tmpstr2 = "&nbsp;";
      }
      resStr +="<TD>"+tmpstr2+"</TD>";
     }
     resStr +="</tr>/n";
    }
    resStr += "</table>";
   }
   catch (SQLException ex)
   {
    System.out.println(new Date().toString() + ":A ERROR is failure" +ex.getMessage());
    resStr = "";
   }
/////////////////////////////////////////////////////
  }
  catch (Exception ex)
  {
   System.out.println(new Date().toString() + ":stmt.excuteQuery();"+ex.getMessage());
   resStr = "";
  }

  try
  {
   rs.close();
  }
  catch (Exception ex)
  {
   System.out.println(new Date().toString() + ":A ERROR is failure" +ex.getMessage());
  }

  try
  {
   stmt.close();
  }
  catch (Exception ex)
  {
   System.out.println(new Date().toString() + ":A ERROR is failure" +ex.getMessage());
  }

  try
  {
   conn.close();
  }
  catch (Exception ex)
  {
   System.out.println(new Date().toString() + ":A ERROR is failure" +ex.getMessage());
  }
  return resStr;
 }
}

 

 

原创粉丝点击