javamail 我的一个用例

package com.mail;

import java.io.*;
import java.text.*;
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import java.io.PrintWriter;
import java.util.Properties;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.activation.*;
import java.io.IOException;

//public class PraseMimeMessage implements Runnable {
public class PraseMimeMessage{
 public static class SMTPAuthenticator extends Authenticator
 {
  private String username;
  private String password;

  public SMTPAuthenticator(String username, String password)
  {
   super();
   this.username = username;
   this.password = password;
  }

  protected  PasswordAuthentication getPasswordAuthentication()
  {
   return new PasswordAuthentication(this.username, this.password);
  }
 }

 private MimeMessage mimeMessage = null;
        private String saveAttachPath = "";          //附件下载后的存放目录
 private String picAddress = ""; //图片存放URL地址
        private StringBuffer bodytext = new StringBuffer(); //存放邮件内容的StringBuffer对象
        private String dateformat = "yy-MM-dd HH:mm";       //默认的日前显示格式
       
 /*
 * 
        *      * 构造函数,初始化一个MimeMessage对象
        *          
 */
 public PraseMimeMessage(){}
        public PraseMimeMessage(MimeMessage mimeMessage){
         this.mimeMessage = mimeMessage;
         System.out.println("create a PraseMimeMessage object......../n");
        }
        public void setMimeMessage(MimeMessage mimeMessage){
         this.mimeMessage = mimeMessage;
        }          
        //设置图片url地址
 public void setPicAddress(String picaddress)
 {
  this.picAddress = picaddress;
 }
 //取图片url地址
 public String getPicAddress()
 {
  return this.picAddress;
 }
 /*
 *
 *      * 获得发件人的地址和姓名
 *          
 */
       
 public String getFrom()throws Exception{
         InternetAddress address[] = (InternetAddress[])mimeMessage.getFrom();
         String from = address[0].getAddress();
         if(from == null) from="";
          String personal = address[0].getPersonal();
         if(personal == null) personal="";
          String fromaddr = personal+"<"+from+">";
         return fromaddr;
 }
     
 /*
 *
        *      * 获得邮件的收件人,抄送,和密送的地址和姓名,根据所传递的参数的不同
        *      * "to"----收件人 "cc"---抄送人地址 "bcc"---密送人地址
        *               
 */
        public String getMailAddress(String type)throws Exception{
  String mailaddr = "";
                String addtype = type.toUpperCase();
         InternetAddress []address = null;
         if(addtype.equals("TO") || addtype.equals("CC") ||addtype.equals("BCC")){
   if(addtype.equals("TO")){
    address = (InternetAddress[])mimeMessage.getRecipients(Message.RecipientType.TO);
   }else if(addtype.equals("CC")){
    address = (InternetAddress[])mimeMessage.getRecipients(Message.RecipientType.CC);
   }else{
    address = (InternetAddress[])mimeMessage.getRecipients(Message.RecipientType.BCC);
   }
   if(address != null){
    for(int i=0;i<address.length;i++){
     String email=address[i].getAddress();
     if(email==null)
      email="";
     else{
      email=MimeUtility.decodeText(email);
     }
     String personal=address[i].getPersonal();
     if(personal==null)
      personal="";
     else{
      personal=MimeUtility.decodeText(personal);
     }
     String compositeto=personal+"<"+email+">";
     mailaddr+=","+compositeto;
    }
    mailaddr=mailaddr.substring(1);
   }
  }else{
   throw new Exception("Error emailaddr type!");
  }
  return mailaddr;
 }
 
 /*
 *      * 获得邮件主题
 */
 public String getSubject()throws MessagingException{
  String subject = "";
  try{
   subject = MimeUtility.decodeText(mimeMessage.getSubject());
   if(subject == null) subject="";
  }catch(Exception exce){
  }
  return subject;
 }
          
 /*
 *      * 获得邮件发送日期
 */
 public String getSentDate()throws Exception{
  Date sentdate = mimeMessage.getSentDate();
  SimpleDateFormat format = new SimpleDateFormat(dateformat);
  return format.format(sentdate);
 }
              
 /*
 *      * 获得邮件正文内容
 */
 public String getBodyText(){
  return bodytext.toString();
 }
           
 /*
 *      * 解析邮件,把得到的邮件内容保存到一个StringBuffer对象中,解析邮件
 *      * 主要是根据MimeType类型的不同执行不同的操作,一步一步的解析
 */
 public void getMailContent(Part part)throws Exception{
  String contenttype = part.getContentType();
  int nameindex = contenttype.indexOf("name");
  boolean conname =false;
  if(nameindex != -1) conname=true;
  //System.out.println("CONTENTTYPE: "+contenttype);
  if(part.isMimeType("text/plain") && !conname){
   bodytext.append((String)part.getContent());
  }else if(part.isMimeType("text/html") && !conname){
   bodytext.append((String)part.getContent());
  }else if(part.isMimeType("multipart/*")){
   Multipart multipart = (Multipart)part.getContent();
   try{
   int counts = multipart.getCount();
   for(int i=0;i<counts;i++){
    getMailContent(multipart.getBodyPart(i));
   }
   }
   catch(Exception ex)
   {
    System.out.println("["+ex+"]/n"); 
   }
  }else if(part.isMimeType("message/rfc822")){
   getMailContent((Part)part.getContent());
  }else{}
 }

 /*
 *      * 判断此邮件是否需要回执,如果需要回执返回"true",否则返回"false"
 */
 public boolean getReplySign()throws MessagingException{
  boolean replysign = false;
  String needreply[] = mimeMessage.getHeader("Disposition-Notification-To");
  if(needreply != null){
   replysign = true;
  }
  return replysign;
 }
             
 /*
 *      * 获得此邮件的Message-ID
 */
 public String getMessageId()throws MessagingException{
  return mimeMessage.getMessageID();
 }
                 
 /*
 *      * 【判断此邮件是否已读,如果未读返回返回false,反之返回true】
 */
 public boolean isNew()throws MessagingException{
  //boolean isnew = false;
  //Flags flags = ((Message)mimeMessage).getFlags();
  //Flags.Flag []flag = flags.getSystemFlags();
  //System.out.println("flags's length: "+flag.length);
  //for(int i=0;i<flag.length;i++){
  // if(flag[i] == Flags.Flag.SEEN){
  //  isnew=true;
  //  System.out.println("seen Message.......");
  //  break;
  // }
  //}
  //return isnew;
  return ((Message)mimeMessage).isSet(javax.mail.Flags.Flag.DELETED);
 }
       
 //getMsgNum()
 public int getMsgNum()throws MessagingException{
  return ((Message)mimeMessage).getMessageNumber();
 }
 /*
 *      * 判断此邮件是否包含附件
 */
 public boolean isContainAttach(Part part)throws Exception{
  boolean attachflag = false;
  String contentType = part.getContentType();
  if(part.isMimeType("multipart/*")){
   Multipart mp = (Multipart)part.getContent();
   try{
    for(int i=0;i<mp.getCount();i++){
     BodyPart mpart = mp.getBodyPart(i);
     String disposition = mpart.getDisposition();
     if((disposition != null) &&((disposition.equals(Part.ATTACHMENT)) ||(disposition.equals(Part.INLINE))))
      attachflag = true;
     else if(mpart.isMimeType("multipart/*")){
      attachflag = isContainAttach((Part)mpart);
     }else{
      String contype = mpart.getContentType();
      if(contype.toLowerCase().indexOf("application") != -1) attachflag=true;
      if(contype.toLowerCase().indexOf("name") != -1) attachflag=true;
     }
    }
   }
   catch(Exception ex)
   {
    System.out.println("[isContainAttach method"+ex+"]/n");
    return false;
   }
  }else if(part.isMimeType("message/rfc822")){
   attachflag = isContainAttach((Part)part.getContent());
  }
  return attachflag;
 }
                  
 /*
 *      * 【保存附件】
 */
 public void saveAttachMent(Part part)throws Exception{
  String fileName = "";
  if(part.isMimeType("multipart/*")){
   Multipart mp = (Multipart)part.getContent();
   for(int i=0;i<mp.getCount();i++){
    System.out.println("附件一共有 : ["+mp.getCount()+"] 个/n");
    BodyPart mpart = mp.getBodyPart(i);
    String disposition = mpart.getDisposition();
    if((disposition != null) &&((disposition.equals(Part.ATTACHMENT)) ||(disposition.equals(Part.INLINE)))){
     fileName = mpart.getFileName();
     if(fileName.toLowerCase().indexOf("gb2312") != -1){
      fileName = MimeUtility.decodeText(fileName);
     }
     saveFile(fileName,mpart.getInputStream());
    }else if(mpart.isMimeType("multipart/*")){
     saveAttachMent(mpart);
    }else{
     fileName = mpart.getFileName();
     if((fileName != null) && (fileName.toLowerCase().indexOf("GB2312") != -1)){
      fileName=MimeUtility.decodeText(fileName);
      saveFile(fileName,mpart.getInputStream());
     }
    }
   }
  }else if(part.isMimeType("message/rfc822")){
   saveAttachMent((Part)part.getContent());
  }
 }
                
 /*
        *      * 【设置附件存放路径】
        */
        public void setAttachPath(String attachpath){
  this.saveAttachPath = attachpath;
 }
                   
 /*
 *      * 【设置日期显示格式】
 */
 public void setDateFormat(String format)throws Exception{
  this.dateformat = format;
 }
                  
 /*
 *      * 【获得附件存放路径】
 */
 public String getAttachPath(){
  return saveAttachPath;
 }
 /*
 *      * 【真正的保存附件到指定目录里】
 */
 private void saveFile(String fileName,InputStream in)throws Exception{
  String osName = System.getProperty("os.name");
  String storedir = getAttachPath();
  String separator = "";
  
  if(osName == null) osName="";
  if(osName.toLowerCase().indexOf("win") != -1){
   separator = "//";
   if(storedir == null || storedir.equals("")) storedir="c://tmp";
  }else{
   separator = "/";
   storedir = "/home/qianglee/mail/user/data";
  }
  
  String saveFullPath = getAttachPath();
  
  //System.out.println("+++++++++++++++++         格式时间:     +++++++++++++++/n");
  Calendar cal  = Calendar.getInstance();
  SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
  String mDateTime=formatter.format(cal.getTime());
  //System.out.println("+++++++++++++"+mDateTime+"++++++++++++++/n");
  
  //mDateTimes = 2004-12-05   
  File newdir1=new File(storedir+"/"+mDateTime);                                                       
  if(newdir1.mkdir())                                                                       
   System.out.println("*********     成功创建文件夹 1 层   **********/n");   
  
  Thread.sleep(100);
  
  File newdir2=new File(storedir+"/"+mDateTime+"/"+saveFullPath);
  if(newdir2.mkdir())
   System.out.println("*********     成功创建文件夹 2 层   **********/n");
  
  Thread.sleep(100);
  //这里取得fileName的扩展名,然后将fileName重新命名为一个随机数字
  String fileExt = "";
  
  if(fileName.indexOf(".jpg")>0||fileName.indexOf(".JPG")>0)
   fileExt = ".jpg";
  if(fileName.indexOf(".png")>0||fileName.indexOf(".PNG")>0)
   fileExt = ".png";
  if(fileName.indexOf(".gif")>0||fileName.indexOf(".GIF")>0)
   fileExt = ".gif";
  if(fileName.indexOf(".bmp")>0||fileName.indexOf(".BMP")>0)
   fileExt = ".bmp";

  System.out.println("文件扩展名:["+fileExt+"]/n");
  
  String rand_fileName = Long.toString(System.currentTimeMillis());//+fileExt;
  String last_fileName = rand_fileName+fileExt;
  System.out.println("文件名:["+rand_fileName+"]/n");
  System.out.println("文件原始名:["+fileName+"]/n");
  
  File storefile = new File(storedir+"/"+mDateTime+"/"+saveFullPath+separator+last_fileName);
  String picAddress = "http://xxx.xxx.xxx.xxx"+"/user/data/"+mDateTime+"/"+saveFullPath+separator+rand_fileName+".png";
  setPicAddress(picAddress);//设置该图片存储地址
  System.out.println("最后附件被保存到 : ["+storefile.toString()+"]/n");
  //for(int i=0;storefile.exists();i++){
  // storefile = new File(storedir+separator+fileName+i);
  // }
  BufferedOutputStream bos = null;
  BufferedInputStream  bis = null;
  try{
   bos = new BufferedOutputStream(new FileOutputStream(storefile));
   bis = new BufferedInputStream(in);
   int c;
   while((c=bis.read()) != -1){
    bos.write(c);
    bos.flush();
   }
  }catch(Exception exception){
   exception.printStackTrace();
   throw new Exception("文件保存失败!");
  }finally{
   bos.close();
   bis.close();
  }
 }
       
 /*
 *    * 对发送者的邮件名称拆分
 *    得到发送者的号码
 */
 public static String getMobileNumber(String srcMailName){
 //public String getMobileNumber(String srcMailName){
  String sParm = srcMailName;
  String temp = srcMailName;
  if(temp == null || temp.equals("")){
   temp="wrongmobile";
  }
  //if(temp.length()<=)
  if(temp.indexOf("<")<0||temp.indexOf("@")<0)
  {
   temp="wrongmobile";
  }
  else{
   temp = sParm.substring( sParm.indexOf("<")+1, sParm.indexOf("@") ); //sParm.length()
  }
  return temp;
 }
 
 /*
 *    * 对发送者的邮件名称拆分
 *    得到发送者的邮箱地址,以便回复
 */
 public static String getMobieleSender(String srcMailAddress){
 //public String getMobieleSender(String srcMailAddress){
  String sParm = srcMailAddress;
  String temp = srcMailAddress;
  if(temp == null || temp.equals("")){
   temp="wrongaddress";
  }
  else{
   temp = sParm.substring( sParm.indexOf("<")+1, sParm.indexOf(">") ); //sParm.length()
  }
  return temp;
 
 }
 /*
   *   发送邮件
  *     * @param smtpHost
  *     * @param email
  *     * @throws MessagingException
  */
  protected static void sendMail(String email,String returnID,String mid,boolean flag) throws MessagingException 
  //protected void sendMail(String email,String returnID,boolean flag) throws MessagingException 
  { 
   try{
    //String mailID = returnID;//substring( sParm.indexOf("<")+1, sParm.indexOf(">") );
    //mailID = mailID.substring( mailID.indexOf("0")+1, mailID.length() );
    //System.out.println("***********************************************");
    //System.out.println("邮件的ID=["+mailID+"]/n/n");
    //System.out.println("***********************************************");
    Properties props = System.getProperties();
    props.put("mail.smtp.host", "mail.xxx.com.cn");//SMTP服务器
    //props.put("mail.smtp.host", "mail.xxx.com");//SMTP服务器
    props.put("mail.smtp.auth", "true");//发送邮件时是否需要验证身份
    props.put("mail.mime.charset", "GB2312");//邮件正文的字符集
    //String username = "xxxx";   //邮箱用户名
    //String password = "xxxx";//邮箱密码
    //String username = "xxxx";   //邮箱用户名
    //String password = "xxxx";//邮箱密码
    String username = "xxxx";   //邮箱用户名
    String password = "xxxx";//邮箱密码
    SMTPAuthenticator authenticator = new SMTPAuthenticator(username, password);//用户身份验证
    //create a new Session object
    Session session = Session.getInstance(props, authenticator);
    session.setDebug(false); //是否打印调试信息的标记
    //String from = "xxxx@xxx.com.cn"; //发送方邮箱
    //String from = "xxxx@xxxx.com"; //发送方邮箱
    String from = "xxxx@xxxx.com.cn"; //发送方邮箱
    String to = email;    //接收方邮箱
    String subject = "谢谢您的参与!";//邮件标题
    String body = "";
    if(flag){
     //body = "您好!感谢您的参与! 您的帖子编号为["+returnID+"],如要取消此次帖子发布,请回复本邮件并勿发送任何附件,系统将取消您的此次发帖!如要发布,请不要回复此邮件。";//邮件正文
     body = "您好!感谢您的参与! 您的帖子编号为["+returnID+"],如果您要取消帖子的发布,请点击下面的连接http://xxx.xxx.xxx.xxx/user/usermanager.jsp?mid="+mid+"以取消。";//邮件正文
    body+="<br/>+版权声明:xx拥有本站页面设计的版权;图片资料的版权由资料提供者拥有,功能性内容版权由本站拥有。
    未经xxx的明确书面许可,任何人不得复制或在非本站所属的服务器上做镜像。传统媒体转载或任何其他形式的商业使用
    均须事先与资料提供者或xxxx联系并征得许可。xxxx对于供稿者发布内容所引发的版权、署名权、肖像权纠纷应由供稿者
    负责,本站不承担任何责任。供稿者所提供的内容仅代表其个人行为,与本站立场无关。对于在本站上传内容的用户,
    其上传内容视为自愿提供,不另向作者付稿酬;并且该上传内容可能会被他人下载或使用,凡在本站上传内容的用户则
    视为同意他人可在本站自由下载、使用该上传内容。上传内容中严禁发布或链接有关政治、色情、宗教、迷信等违法信
    息,否则由该内容上传人承担直接或间接引起的刑事或民事法律责任。对于在本站公然发表猥亵、色情和反政府言论、
    从事非法商业行为者等,本站有义务向公安部门提供该用户的相关资料。附则:1.本站服务器如因系统维护或升级而
    需暂停服务时,将事先公告。若因硬件故障或其它不可抗力而导致暂停服务,于暂停服务期间造成的一切不便与损失,
    本站不承担任何责任。2.本系统若遇不可抗拒外力影响而导致资料遗失时,本站不承担任何责任。3.用户在使用本站
    期间有触犯各种法律的,一切后果自己负责,本站不承担任何责任。本站的最终解释权属xx所有。"; 
    //body = "您好!感谢您的参与! 您的帖子编号为["+returnID+"],如果您要取消此次帖子的发布,请点击下面的连接http://xxx.xxx.xxx.xxx/user/subcancel.jsp?uid="+mailID+"以取消。";//邮件正文
   
    } 
   else{
     body = "您好!您已经成功取消了发布状态的信息,感谢您的参与!请不要回复此邮件。";//邮件正文
   }
     //create a new MimeMessage object (using the Session created above)
    MimeMessage message = new MimeMessage(session);
    message.setFrom(new InternetAddress(from, "感谢您的参与!", "gb2312"));
    InternetAddress[] address = new InternetAddress[] { new InternetAddress(to, "接收人姓名", "gb2312") };
    message.setRecipients(Message.RecipientType.TO, address);
    //如果不需要带附件,直接使用以下两行代码即可
    message.setContent(body, "text/plain");
    message.setText(body, "GB2312");
    Transport.send(message);
    System.out.println("------邮件发送到["+to+"]成功-------/n");

    }catch(Throwable t){
   System.out.println("-------邮件没有发送成功-------/n");
   t.printStackTrace(System.out);
  }
  }

 /*
  * * PraseMimeMessage类测试
  */
 public static void main(String args[])throws Exception{
 //public void run() { 
        System.out.println("begin thread/n");
 int timecount = 0;
        while(true)
        {
  try{
  //进行登陆邮箱收信、发信、插入数据库、反向查询等操作
  String host = "pop.xxxx.com.cn";    
  String username ="xxxx";   
  String password ="xxxx";      
  Properties props = new Properties();
  Session session = Session.getDefaultInstance(props, null);
  Store store = session.getStore("pop3");
  store.connect(host, username, password);
  Folder folder = store.getFolder("INBOX");
  folder.open(Folder.READ_WRITE);
  Message message[] = folder.getMessages();
  System.out.println("一共有: ["+message.length+"]条邮件/n");
  PraseMimeMessage pmm = null;
  for(int i=0;i<message.length;i++){
   //每处理一封邮件, 1秒
   Thread.sleep(1000);
   pmm = new PraseMimeMessage((MimeMessage)message[i]);
   int tmpcount = i+1;
   System.out.println("**********开始处理第 : ["+tmpcount+"]条邮件**********/n");
   pmm.getMailContent((Part)message[i]);
   String whoSend = pmm.getFrom();
   System.out.println("此邮件发送者信息["+whoSend+"]/n");
   /// 这个地方对每一封信件作处理保存附件等 / 
   System.out.println("[设置邮件标记]/n");
   Flags flags = new Flags(Flags.Flag.DELETED);    //设置为删除
   int msgNo = pmm.getMsgNum();//pmm.getMessageNumber(); ->((Message)mimeMessage).getMessageNumber();
   folder.setFlags(msgNo, msgNo, flags, true);   //设置邮件标记
   //保存附件
   //这个地方就应该对邮件的名字信息进行处理,如果没有得到以手机号码的邮件名
   //就需要去 SOCKET API 接口 取,如果没有取道,就放弃该邮件的操作
   // 如果没有取道,放弃该邮件的操作,包括存储附件,插入数据库记录等
   // 如果取道了,接着进行 存储附件,对该用户的邮件纪录进行插入数据库处理
          //得到发信者邮箱地址
   System.out.println("[处理邮件流程开始]/n");
   System.out.println("[******************************************]/n");
   String sender = getMobieleSender(whoSend);
   String mobileUser = getMobileNumber(whoSend);
   //该邮件不重复的库表查询标示
   String messageOnlyID;
   //回复成功的MAILID编号
   String returnMailID;
   if(sender.equals("wrongaddress"))
    System.out.println("未得到该用户的邮箱地址,无法回复!/n");
   else{
    String realUserMobile;
    String tmpSender = sender;
    String tmpSender2 = sender;
    tmpSender2 = sender.substring( tmpSender.indexOf("<")+1, tmpSender.indexOf("@") );
    System.out.println(tmpSender2+" 是该邮件名/n");
    String idmobileuser = tmpSender2;
    if( tmpSender2.length()!=11 || !(tmpSender2.substring(0,3)).equals("xxx") ){
     System.out.println(tmpSender2+"邮件名非手机号码,调用接口获得/n");
     aimcQuery queryMobile = new aimcQuery();
     realUserMobile = queryMobile.aimcResult(tmpSender);
     //realUserMobile = "not get";
     System.out.println(tmpSender2+"邮件名非手机号码调用 接口获得 = ["+realUserMobile+"]/n");
     if(realUserMobile.equals("not get")||realUserMobile.equals("")||realUserMobile==null){
      System.out.println(tmpSender2+"最终没能获得正确邮件名,此邮件不做处理!/n");
     }
     if( realUserMobile.length()!=11 || !(realUserMobile.substring(0,3)).equals("133") ){
      System.out.println(tmpSender2+"最终还是没能获得正确邮件名,此邮件不做处理!/n");
     }
     else{
      //处理此邮件,包括存附件,调用数据库插入纪录等
      //1。存储附件
      //判断附件状态
      //有附件
      if(pmm.isContainAttach((Part)message[i]))
      {
      //pmm.setAttachPath(mobileUser);
      pmm.setAttachPath(realUserMobile);
      pmm.saveAttachMent((Part)message[i]);
      //2。回复该邮件
      //sendMail(realUserMobile+"@xxxx.com.cn");
      //3。写入数据库
      System.out.println("该纪录写入数据库,之前要取得该用户邮件信息/n");
      System.out.println("[[  用户邮件信息: ]]/n");
      
      System.out.println("******用户手机号,作唯一标示:["+realUserMobile+"]/n");
      System.out.println("******用户邮件发送日期:["+pmm.getSentDate()+"]/n");
      System.out.println("******用户邮件标题,帖子标题:["+pmm.getSubject()+"]/n");
      System.out.println("******用户邮件正文,帖子内容:["+pmm.getBodyText()+"]/n");
      System.out.println("******用户邮箱名,辅助信息:["+sender+"]/n");
      System.out.println("******用户附件地址1原图:["+pmm.getPicAddress()+"]/n");
      System.out.println("******用户附件地址1修改图:[xxx]/n");
        
      String title = new String((pmm.getSubject()).getBytes("GB2312"),"ISO8859_1");
      String body = new String((pmm.getBodyText()).getBytes("GB2312"),"ISO8859_1");
      //String title = pmm.getSubject();
      //String body = pmm.getBodyText();
      if(title.equals("")||title.equals(" ")||title==null||title.equals("null")||title.equals("NULL"))
  {  
   System.out.println("title=["+title+"]/n");
   title="标题未命名";
   title = new String(title.getBytes("GB2312"),"ISO8859_1");
  }
  if(body.equals("")||body.equals("/r/n")||body.equals("/n")||body.equals("/r")||body==null||body.equals("null")||body.equals("NULL"))
  {
   System.out.println("body=["+body+"]/n");
   body="没有具体的正文信息";
   body = new String(body.getBytes("GB2312"),"ISO8859_1");
  }
      String address = new String(sender.getBytes("GB2312"),"ISO8859_1");
      String url = new String((pmm.getPicAddress()).getBytes("GB2312"),"ISO8859_1");
      messageOnlyID = Long.toString(System.currentTimeMillis());
      
      mailDBinsert insertMail = new mailDBinsert();
      
      boolean insertFlag = insertMail.insertDB(realUserMobile,pmm.getSentDate(),title,body,address,url,url,messageOnlyID);
      
      if(insertFlag)
       System.out.println("邮件信息插入数据库表成功/n");
      else
       System.out.println("邮件信息插入数据库表失败/n");

      //停一下,再去取刚才插入的信息.....取消,因为这里面有不安全的因素
      //只给用户一个连接,连上去之后再作判断
      
      Thread.sleep(500);
      //这里就不用去取id了
      returnMailID = insertMail.getSendID(messageOnlyID);
      //2。回复该邮件
      sendMail(tmpSender2+"@xxxx.com.cn", returnMailID,messageOnlyID,true);//returnMailID,true);
      //sendMail(realUserMobile+"@xxxx.com.cn", returnMailID,true);
      insertMail.close();
      }else{
       //无附件,查询库,将属于该用户的手机号码的今天的所有信息置否
       //先查询该用户发布信息按照手机号和今天的日期(realUserMobile)
       //mailDBinsert insertMail = new mailDBinsert();
       //if(insertMail.getUserPostFlag(realUserMobile,(pmm.getSentDate().substring(0,8)))){//如果按照手机号和日期查到了
        //执行将用户置否状态,按照截取的日期和手机号码
       // insertMail.updateUserFlag(realUserMobile,(pmm.getSentDate().substring(0,8)));
       
       //发送邮件告诉用户已经置否
       //sendMail(realUserMobile+"@xxxx.com.cn", "",false);
       //}
       //insertMail.close();
       Thread.sleep(500);
      }
     }
    }else{
     //发邮件的账号是手机号码,无需调用查询接口,直接执行
     System.out.println("发邮件的账号是手机号码["+sender+"]无需调用查询接口/n");
     //1。存储附件
     //有附件
                                        if(pmm.isContainAttach((Part)message[i]))
     {
     pmm.setAttachPath(mobileUser);
     pmm.saveAttachMent((Part)message[i]);
     //2。回复该邮件
     //sendMail(sender);
     //3。写入数据库
     System.out.println("该纪录写入数据库,之前要取得该用户邮件信息/n");
     System.out.println("[[  用户邮件信息: ]]/n");
     
     System.out.println("******用户手机号,作唯一标示:["+tmpSender2+"]/n");
     System.out.println("******用户邮件发送日期:["+pmm.getSentDate()+"]/n");
     System.out.println("******用户邮件标题,帖子标题:["+pmm.getSubject()+"]/n");
     System.out.println("******用户邮件正文,帖子内容:["+pmm.getBodyText()+"]/n");
     System.out.println("******用户邮箱名,辅助信息:["+sender+"]/n");
     System.out.println("******用户附件地址1原图:["+pmm.getPicAddress()+"]/n");
     System.out.println("******用户附件地址1修改图:[xxx]/n");
    
     String title = new String((pmm.getSubject()).getBytes("GB2312"),"ISO8859_1");
     String body = new String((pmm.getBodyText()).getBytes("GB2312"),"ISO8859_1");
     //String title = pmm.getSubject();
     //String body = pmm.getBodyText();
     if(title.equals("")||title.equals(" ")||title==null||title.equals("null")||title.equals("NULL"))
  {  
   System.out.println("title=["+title+"]/n");
   title="标题未命名";
   title = new String(title.getBytes("GB2312"),"ISO8859_1");
  }
  if(body.equals("")||body.equals("/r/n")||body.equals("/n")||body.equals("/r")||body==null||body.equals("null")||body.equals("NULL"))
  {
   System.out.println("body=["+body+"]/n");
   body="没有具体的正文信息";
   body = new String(body.getBytes("GB2312"),"ISO8859_1");
  }
     String address = new String(sender.getBytes("GB2312"),"ISO8859_1");
     String url = new String((pmm.getPicAddress()).getBytes("GB2312"),"ISO8859_1");
     messageOnlyID = Long.toString(System.currentTimeMillis());
     
     mailDBinsert insertMail = new mailDBinsert();
      
     boolean insertFlag = insertMail.insertDB(tmpSender2,pmm.getSentDate(),title,body,address,url,url,messageOnlyID);
     if(insertFlag)
      System.out.println("邮件信息插入数据库表成功/n");
     else
      System.out.println("邮件信息插入数据库表失败/n");
     //停一下,再去取刚才插入的信息,同上,不用得到id了
     Thread.sleep(500);
     returnMailID = insertMail.getSendID(messageOnlyID);
     //回复该邮件
     sendMail(sender+"@xxxx.com.cn", returnMailID,messageOnlyID,true);
     //sendMail(sender,"0",true);//returnMailID,true);
     insertMail.close();
     }else{//无附件,查询库,将属于该用户的手机号码的今天的所有信息置否
      //mailDBinsert insertMail = new mailDBinsert();
      //if(insertMail.getUserPostFlag(tmpSender2,(pmm.getSentDate().substring(0,8)))){//如果按照手机号和日期查到了
      //执行将用户置否状态,按照截取的日期和手机号码
      //insertMail.updateUserFlag(tmpSender2,(pmm.getSentDate().substring(0,8)));
      //发送邮件告诉用户已经置否
      //sendMail(tmpSender2+"@xxxx.com.cn", " ",false); 
      //}
      //insertMail.close();
      Thread.sleep(500);
     } 
    }
   }
   System.out.println("[处理邮件流程结束]/n");
   System.out.println("[******************************************]/n");
   System.out.println("*************第 ["+tmpcount+"]  个邮件已经读取处理并删除*************/n");
  }
  folder.close(true);
  store.close();
  timecount++;
  }catch(Exception e){
   continue;
  }
  //try {
   System.out.println("times=["+timecount+"]/n");
   Thread.sleep(1000 * 30);
  //}
  //catch (InterruptedException ex) {
  // ex.printStackTrace();
  //}
 }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值