请问那个知道怎么样利用JAVAMAIL来接收邮件,跟管理邮件,然后在JSP页面我要怎么做?希望那位高手能够提供帮助,最好有完整的列子代码!谢谢!实现成功的,马上给加分!

解决方案 »

  1.   

    在jsp中调用方法就可以了。   
      太长,分开贴了。  import   java.io.*;   
      import   java.util.*;   
      import   javax.mail.*;   
      import   javax.mail.internet.*;   
      import   javax.servlet.*;   
      import   javax.servlet.http.*;   
        
      public   class   WebMailBean   implements   HttpSessionBindingListener   {   
          Session   session   =   null;   
          String   protocol   =   null;   
          String   host   =   null;   
          int   port   =   -1;   
          String   user   =   null;   
          String   defaultFrom   =   null;   
          Store   store   =   null;   
          Folder[]   folders   =   null;   
          String[]   folderNames   =   null;   
          Folder   currentFolder   =   null;   
          int   currentMessageNumber   =   0;   
          Message   currentMessage   =   null;   
        
          //使用你选择的smtp服务器   
          public   WebMailBean()   {   
              Properties   properties   =   System.getProperties();   
              properties.put("mail.transport.protocol",   "smtp");   
              properties.put("mail.smtp.host",   "mail.yangnan.com");   
              session   =   Session.getInstance(properties,   null);   
        
              //   session.setDebug(true);   
          }   
        
          //   返回一个已安装协议的列表   
        
          public   String[]   getProtocols()   {   
              Provider[]   providers   =   session.getProviders();   
        
              List   storeProtocols   =   new   ArrayList();   
        
              for   (int   i   =   0;   i   <   providers.length;   ++i)   {   
                  if   (providers[i].getType()   ==   Provider.Type.STORE)   {   
                      storeProtocols.add(providers[i].getProtocol());   
                  }     
              }     
        
              return   (String[])   storeProtocols.toArray(new   String[0]);   
          }     
        
          //   属性设置方法   
          //   包括主机,协议,端口等   
        
          public   void   setProtocol(String   protocol)   {   
              if   (this.protocol   ==   null)   {   
                  this.protocol   =   protocol;   
              }     
          }     
        
          public   String   getProtocol()   {   
              return   this.protocol;   
          }     
        
          public   void   setHost(String   host)   {   
              if   (this.host   ==   null)   {   
                  this.host   =   host;   
              }     
          }     
        
          public   String   getHost()   {   
              return   this.host;   
          }     
        
          public   void   setPort(int   port)   {   
              if   (this.port   ==   -1)   {   
                  this.port   =   port;   
              }     
          }     
        
          public   int   getPort()   {   
              return   this.port;   
          }     
      //用户   
          public   void   setUser(String   user)   {   
              if   (this.user   ==   null)   {   
                  this.user   =   user;   
              }     
          }     
        
          public   String   getUser()   {   
              return   this.user;   
          }     
        
          //使用密码来初始化一个连接   
        
          public   void   setPassword(String   password)   throws   MessagingException   {   
              connect(password);   
          }     
        
          //   使用用户的名称和主机来初始化一个发送人地址   
        
          public   String   getFrom()   {   
              if   (defaultFrom   ==   null)   {   
                  defaultFrom   =   user   +   "@"   +   host;   
        
              }     
              return   defaultFrom;   
          }     
        
        
          void   connect(String   password)   throws   MessagingException   {   
              if   (store   ==   null)   {   
                  store   =   session.getStore(protocol);   
                  store.connect(host,   port,   user,   password);   
                  cacheFolders();   
                  setFolder("INBOX");   
              }     
          }     
        
          //   在用户登录时判断是否仍然在连接中   
        
          public   boolean   isConnected()   {   
              if   (store   !=   null)   {   
                  return   store.isConnected();   
        
              }     
              return   false;   
          }     
        
          //   关闭连接   
        
          void   close()   {   
              if   (isConnected())   {   
                  try   {   
        
                      //将所有打开的文件夹关闭   
        
                      if   (folders   !=   null)   {   
                          for   (int   i   =   0;   i   <   folders.length;   ++i)   {   
                              if   (folders[i].isOpen())   {   
                                  folders[i].close(true);   
                              }     
                          }     
                      }     
        
                      if   (store   !=   null)   {   
                          store.close();   
        
                      }     
                  }   catch   (MessagingException   e)   {   
        
                      //   异常的处理   
                  }     
              }     
          }     
        
          //   对文件夹的操作进行缓存   
        
          void   cacheFolders()   throws   MessagingException   {   
              Folder   defaultFolder   =   store.getDefaultFolder();   
              Folder[]   childFolders   =   defaultFolder.list();   
        
              List   availableFolders   =   new   ArrayList();   
        
              for   (int   i   =   0;   i   <   childFolders.length;   ++i)   {   
                  String   folderName   =   childFolders[i].getName();   
                  if   (!folderName.startsWith(".")     
                                  &&!folderName.equalsIgnoreCase("INBOX"))   {   
                      availableFolders.add(childFolders[i]);   
                  }     
              }     
        
              //   按照文件夹的名称进行排序   
        
              Collections.sort(availableFolders,   new   Comparator()   {   
                  public   int   compare(Object   o1,   Object   o2)   {   
                      return   ((Folder)   o1).getName()   
                          .compareToIgnoreCase(((Folder)   o2).getName());   
                  }     
              });   
        
              //   将INBOX加到列表的第一的位置   
              Folder   inbox   =   defaultFolder.getFolder("INBOX");   
        
              if   (inbox.exists())   {   
                  availableFolders.add(0,   inbox);   
        
              }     
              folders   =   (Folder[])   availableFolders.toArray(new   Folder[0]);   
          }     
        
          //   从缓存的数组中寻找文件夹   
        
          Folder   findFolder(String   folderName)   {   
              for   (int   i   =   0;   i   <   folders.length;   ++i)   {   
                  if   (folders[i].getName().equals(folderName))   {   
                      return   folders[i];   
                  }     
              }     
        
              return   null;   
          }     
        
          public   void   setFolder(String   folderName)   throws   MessagingException   {   
              currentFolder   =   findFolder(folderName);   
        
              if   ((!currentFolder.isOpen())   &&   (currentFolder.exists())     
                              &&   ((currentFolder.getType()   &   Folder.HOLDS_MESSAGES)     
                                      !=   0))   {   
                  currentFolder.open(Folder.READ_WRITE);   
              }     
        
              currentMessageNumber   =   0;   
              currentMessage   =   null;   
          }     
        
          //   得到当前文件夹名称   
          public   String   getFolderName()   {   
              return   currentFolder.getName();   
          }     
        
          //得到一个缓存文件夹名称数组   
          public   String[]   getFolderNames()   {   
              String[]   folderNames   =   new   String[folders.length];   
        
              for   (int   i   =   0;   i   <   folders.length;   ++i)   {   
                  folderNames[i]   =   folders[i].getName();   
              }     
        
              return   folderNames;   
          }
      

  2.   


    //得到除当前文件夹以外的所有文件夹的名称   
          //以便用于信息在文件夹之间的转移   
        
          public   String[]   getOtherFolderNames()   {   
              String[]   folderNames   =   new   String[folders.length   -   1];   
        
              for   (int   i   =   0,   j   =   0;   i   <   folders.length;   ++i)   {   
                  if   (folders[i]   !=   currentFolder)   {   
                      folderNames[j++]   =   folders[i].getName();   
                  }     
              }     
        
              return   folderNames;   
          }     
        
          //   返回当前文件夹中的信件数目   
          public   int   getMessageCount()   throws   MessagingException   {   
              return   currentFolder.getMessageCount();   
          }     
        
          //循环得到当前文件夹中未删除的信件   
          public   boolean   getNextMessage()   throws   MessagingException   {   
              int   messageCount   =   currentFolder.getMessageCount();   
        
              for   (int   i   =   currentMessageNumber   +   1;   i   <=   messageCount;   ++i)   {   
                  Message   nextMessage   =   currentFolder.getMessage(i);   
        
                  if   (!nextMessage.isSet(Flags.Flag.DELETED))   {   
                      currentMessageNumber   =   i;   
                      currentMessage   =   nextMessage;   
        
                      return   true;   
                  }     
              }     
        
              return   false;   
          }     
        
          //   设置信件编号,rest一下信件的指针。   
          public   void   setMessage(int   messageNumber)     
                          throws   MessagingException   {   
              if   (messageNumber   ==   0)   {   
                  currentMessageNumber   =   messageNumber;   
                  currentMessage   =   null;   
        
              }   else   {   
                  currentMessageNumber   =   messageNumber   -   1;   
                  getNextMessage();   
              }     
          }     
        
          //   得到当前信件的编号   
          public   int   getMessageNumber()   {   
              return   currentMessage.getMessageNumber();   
          }     
        
          //   得到当前信件发送时间,转为字符串格式   
          public   String   getMessageSentDate()   throws   MessagingException   {   
              Date   sentDate   =   currentMessage.getSentDate();   
        
              if   (sentDate   !=   null)   {   
                  return   sentDate.toString();   
              }   else   {   
                  return   "Date   unknown";   
              }     
          }     
        
          //   得到信件的发送地址和回复地址。   
          public   String   getMessageFrom()   throws   MessagingException   {   
              Address[]   addresses   =   currentMessage.getFrom();   
        
              if   (addresses   ==   null)   {   
                  addresses   =   currentMessage.getReplyTo();   
        
              }     
              if   (addresses.length   >   0)   {   
                  return   addresses[0].toString();   
        
              }     
              return   "";   
          }     
        
          //   得到信件的回复地址。在地址数组中的第一个地址。   
          public   String   getMessageReplyTo()   throws   MessagingException   {   
              Address[]   addresses   =   currentMessage.getReplyTo();   
        
              if   (addresses.length   >   0)   {   
                  return   addresses[0].toString();   
        
              }     
              return   "";   
          }     
      

  3.   


     public   String   getMessageTo()   throws   MessagingException   {   
              Address[]   addresses   =     
                  currentMessage.getRecipients(Message.RecipientType.TO);   
        
              if   (addresses   !=   null   &&   addresses.length   >   0)   {   
                  return   addresses[0].toString();   
        
              }     
              return   "";   
          }     
        
          //   得到信件主题   
        
          public   String   getMessageSubject()   throws   MessagingException   {   
              String   subject   =   currentMessage.getSubject();   
        
              if   (subject   ==   null)   {   
                  subject   =   "";   
        
              }     
              return   subject;   
          }     
        
          //得到信件的大小   
        
          public   String   getMessageSize()   throws   MessagingException   {   
              String   size   =   "?";   
        
              int   bSize   =   currentMessage.getSize();   
        
              if   (bSize   !=   -1)   {   
                  if   (bSize   >=   1024   *   1024)   {   
                      int   mbSize   =   bSize   /   (1024   *   1024);   
                      size   =   mbSize   +   "   MB";   
        
                  }   else   if   (bSize   >=   1024)   {   
                      int   kbSize   =   bSize   /   1024;   
                      size   =   kbSize   +   "   KB";   
        
                  }   else   {   
                      size   =   bSize   +   "   Bytes";   
                  }     
              }     
        
              return   size;   
          }     
        
          //   得到信件的内容   
          public   String   getMessageText()     
                          throws   IOException,   MessagingException   {   
              String   text   =   currentMessage.getContentType();   
        
              if   (currentMessage.isMimeType("text/*"))   {   
                  text   =   (String)   currentMessage.getContent();   
              }   else   if   (currentMessage.isMimeType("multipart/*"))   {   
                  Multipart   multipart   =   (Multipart)   currentMessage.getContent();   
                  BodyPart   firstPart   =   multipart.getBodyPart(0);   
        
                  if   (firstPart.isMimeType("text/*"))   {   
                      text   =   (String)   firstPart.getContent();   
                  }     
              }     
        
              return   text;   
          }     
        
          //   返回一个信件列表   
          //   主要用于多封信件的发送,删除,转移等   
        
          Message[]   findMessages(String[]   messageNumbers)     
                          throws   MessagingException   {   
              if   (messageNumbers   !=   null)   {   
                  List   messageList   =   new   ArrayList();   
        
                  for   (int   i   =   0;   i   <   messageNumbers.length;   ++i)   {   
                      int   messageNumber   =   0;   
        
                      try   {   
                          messageNumber   =   Integer.parseInt(messageNumbers[i]);   
        
                      }   catch   (NumberFormatException   e)   {   
                          messageNumber   =   0;   
                      }     
        
                      if   (messageNumber   >   0)   {   
                          messageList.add(currentFolder.getMessage(messageNumber));   
                      }     
                  }     
        
                  return   (Message[])   messageList.toArray(new   Message[0]);   
              }     
        
              return   new   Message[0];   
          }     
        
          //   jsp调用时根据得到的命令参数来进行处理。   
        
          public   void   doCommand(HttpServletRequest   request)     
                          throws   MessagingException   {   
              String   command   =   request.getParameter("command");   
              String[]   messageNumbers   =   request.getParameterValues("number");   
              String   toFolderName   =   request.getParameter("to");   
        
              Folder   toFolder   =   findFolder(toFolderName);   
      //进行复制处理   
              if   ("Copy".equalsIgnoreCase(command))   {   
                  if   (toFolder   !=   null)   {   
                      Message[]   messages   =   findMessages(messageNumbers);   
                      currentFolder.copyMessages(messages,   toFolder);   
                  }     
              }   else   if   ("Move".equalsIgnoreCase(command))   {//转移信件到别的文件夹   
        
                  if   (toFolder   !=   null)   {   
                      Message[]   messages   =   findMessages(messageNumbers);   
                      currentFolder.copyMessages(messages,   toFolder);   
                      currentFolder.setFlags(messages,     
                                                                    new   Flags(Flags.Flag.DELETED),   true);   
                  }     
              }   else   if   ("Delete".equalsIgnoreCase(command))   {//删除信件   
        
                  Message[]   messages   =   findMessages(messageNumbers);   
                  currentFolder.setFlags(messages,   new   Flags(Flags.Flag.DELETED),     
                                                                true);   
        
              }   else   if   ("Send".equalsIgnoreCase(command))   {//发送信件   
        
      //得到数据   
      //发送人地址   
      //发送地址   
      //抄送地址   
      //暗送地址   
      //主题   
      //内容   
      //回复(如果是回复信件的话,得到原信件的编号)   
                  defaultFrom   =   request.getParameter("from");   
                  String   to   =   request.getParameter("to");   
                  String   cc   =   request.getParameter("cc");   
                  String   bcc   =   request.getParameter("bcc");   
                  String   subject   =   request.getParameter("subject");   
                  String   text   =   request.getParameter("text");   
        
                  String   reply   =   request.getParameter("reply");   
        
                  Message   message   =   null;   
                  int   replyNumber   =   0;   
        
                  try   {   
                      replyNumber   =   Integer.parseInt(reply);   
        
                  }   catch   (NumberFormatException   e)   {}   
        
                  if   (replyNumber   >   0)   {   
                      message   =   currentFolder.getMessage(replyNumber).reply(false);   
                  }   else   {   
                      message   =   new   MimeMessage(session);   
                  }     
        
                  message.setFrom(new   InternetAddress(defaultFrom));   
        
                  if   (to   !=   null)   {   
                      message.setRecipients(Message.RecipientType.TO,     
                                                                  InternetAddress.parse(to));   
        
                  }     
                  if   (cc   !=   null)   {   
                      message.setRecipients(Message.RecipientType.CC,     
                                                                  InternetAddress.parse(cc));   
        
                  }     
                  if   (bcc   !=   null)   {   
                      message.setRecipients(Message.RecipientType.BCC,     
                                                                  InternetAddress.parse(bcc));   
        
                  }     
                  message.setSubject(subject);   
                  message.setText(text);   
        
                  Transport.send(message);   
              }     
          }     
        
          //   因扩展HttpSessionBindingListener接口所以必须实现valueBound,valueUnbound方法   
        
          public   void   valueBound(HttpSessionBindingEvent   event)   {}   
        
          public   void   valueUnbound(HttpSessionBindingEvent   event)   {   
              close();   
          }     
      }   
      

  4.   

    你要是 英文还行这个也不错
     http://jakarta.apache.org/commons/email/ 
      

  5.   

    package com.east.email;import java.util.Date;
    import java.util.Properties;import javax.mail.Session;
    import javax.mail.Transport;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeMessage;
    import javax.mail.*;
    import javax.mail.internet.*;
    import javax.activation.*;public class SendMail {
     private static MailAuthenticator autherticator=null;
     public static void main(String[] args) {
      for (int i=0;i<5;i++){
     
    String from="[email protected]";
    String to="[email protected]";
    String smtpServer="smtp.163.com";
    String subject="Hello ,this is a email Test!!";
    String content ="Welcome to you!!";
    Properties props = System.getProperties();

    props.put("mail.smtp.host", smtpServer);
    props.put("mail.smtp.auth","true");
    autherticator = new MailAuthenticator("[email protected]","xtsaiyy");
        Session session = Session.getDefaultInstance(props,autherticator);
        MimeMessage msg = new MimeMessage(session);
        try{
           msg.setFrom(new InternetAddress(from));
           msg.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(to));
           msg.setSubject(subject);
           msg.setSentDate(new Date());
           msg.setText(content);
           Transport.send(msg);
           System.out.println("成功发送邮件......");
        }catch(Exception se){
         se.printStackTrace();
        }
        }
    }
    }
    //现在的大部分的邮件服务器都要求有身份验证,所以需要此类实现验证功能
    class MailAuthenticator extends Authenticator{

        private String username = null;
        private String userpasswd = null;

        public MailAuthenticator(){}
        public MailAuthenticator(String username,String userpasswd){
            this.username = username;
            this.userpasswd = userpasswd;
        }
        
        public void setUserName(String username){
            this.username = username;
        }

        public void setPassword(String password){
            this.userpasswd = password;
        }

        public PasswordAuthentication getPasswordAuthentication(){
            return new PasswordAuthentication(username,userpasswd);
        }
    }

      

  6.   

    你要是 英文还行这个也不错 
    http://jakarta.apache.org/commons/email/ 
      

  7.   

    你要是 英文还行这个也不错 
    http://jakarta.apache.org/commons/email/ Commons Email aims to provide a API for sending email.
    Commons 只是用于发送邮件