[笔记] 传智播客-javaWeb笔记(4)

来源:互联网 发布:飞豆打印软件 官方 编辑:程序博客网 时间:2024/06/05 23:29
javaWeb笔记  

第四章  JavaMail和Servlet
              发送邮件的工作原理:
                1:客户端把邮件发送给-------->发信服务器---->发送到目的地
                2:发信服务器是各大电子邮箱的服务器。一般在前面加上smtp。比如:
                    smtp.sina.com,smtp.163.com,smtp.126.com等 
                3:只要去申请一个免费的电子邮箱,就可以获得一个发信服务器
             发送邮件必须需要两个包:
                   mail,activation包。这两个包可以在
                   jakarta-tomcat-4.1.31\common\lib下面找到。一定要复制到
                   web模块下面WebMod\WEB-INF\lib下面       
             发送邮件需要导入的包:
  import javax.mail.*;
  import javax.mail.internet.*;
  import javax.activation.*;           
               
              发送邮件的涉及到的类
               Aroperties类:
                  用来指定发信服务器,和使用发信服务器时是否需要身份验证:
                   Properties props = new Properties();//创建一个Properties的实例
     props.put("mail.smtp.host", "smtp.sina.com");//设置发信服务器
     props.put("mail.smtp.auth", "true");//要经过身份验证
               B:Session类,会话类。要发邮件必须要创建一个Session类
                  Session session = Session.getInstance(props);
               C:MimeMessage类.用来指定发送邮件的标题,文本,等
                   MimeMessage message = new MimeMessage(session);//得到MimeMessage的实例
     message.setFrom(new InternetAddress("
chengyuqing110@sina.com"));//设置发件人
     message.addRecipients(Message.RecipientType.TO,"
[url=mailto:chengyu-qing@163.com,chengyu-qing@tom.com]chengyu-qing@163.com,chengyu-qing@tom.com[/url]"); //设置收件人,可以同时指定多个收件人
     message.setSubject("主题");//设置邮件的主题
     message.setText("内容文本");//设置邮件的内容文本
               D:Transport类。用来把邮件进行实际的发送
                  Transport transport = session.getTransport("smtp");//得到Transport类的一个实例
    transport.connect(host, username, password);//连接发信服务器
                  transport.sendMessage(message, message.getAllRecipients());//发送邮件 
                  transport.close();//发送之后关闭
             说明:
               1:选择发信人邮箱一定要是发信服务器里面申请的邮箱
                 比如:
                  如果发信服务器-------->smtp.sina.com
                  则发信人邮箱一定要是sina的邮箱,否则会出现错误
                
                         发送带有附件的邮件
                 具备知识:
                   要发送附件,必须有Multipart类。这个类用来负责管理附件,
                   一个Multipart类同多个MimeBodyPart构成。每一个MimeBodyPart就代表一个附件
                   如果要发送附件,则"文本"也代表一个附件。文本是附件的第一个MimeBodyPart
                  String host = "smtp.sina.com";
    String from = "
chengyuqing110@sina.com";
    String to = "
chengyu-qing@163.com";
    String username = "chengyuqing110";
           String password = "12345678";
           Properties props = new Properties();
           props.put("mail.smtp.host", host);
                  props.put("mail.smtp.auth", "true");
                  Session session = Session.getInstance(props);
                  session.setDebug(true);
                  MimeMessage message = new MimeMessage(session);
           message.setFrom(new InternetAddress(from));
                  message.addRecipients(Message.RecipientType.TO,to);
                  message.setSubject("这是试验");                  
  //===设置附件的正文=======================================            
   MimeBodyPart bp1=new MimeBodyPart();
   bp1.setText("正文");
  //===============设置附件==================================
    MimeBodyPart bp2=new MimeBodyPart();            
    bp2.setDataHandler(new DataHandler(new FileDataSource("c:\\过滤器.ppt")));
    bp2.setFileName(MimeUtility.encodeText("c:\\过滤器.ppt"));  //处理中文  
  //================================加入附件里面=======================
   Multipart   mp=new  MimeMultipart();
    mp.addBodyPart(bp1);             
    mp.addBodyPart(bp2); 
                message.setContent(mp);     
    //==================================================================  
    Transport transport = session.getTransport("smtp");
    transport.connect(host, username, password);
   transport.sendMessage(message, message.getAllRecipients());
    transport.close();      
          //====================================================================         
        
    收邮件
            String Uid =request.getParameter("txtUid");//邮件服务器的用户名
            String Pwd =request.getParameter("txtPwd");//邮件服务器的密码
            String Host =request.getParameter("txtHost");//邮件服务器的主机名,一般是pop.sina.com或pop.163.com
            Properties props = new Properties();           
            Session   Getsession=Session.getDefaultInstance(props);//建立session   
            Store    store     =     Getsession.getStore("pop3");   
            store.connect(Host,Uid,Pwd);   
            Folder folder=store.getFolder("INBOX");
            folder.open(Folder.READ_ONLY);
            Message[] message=folder.getMessages(); 

            message.getSubject()//得到邮件的主题
            message.getSentDate().toLocaleString()//得到发信日期

            Multipart  p=(Multipart)message.getContent(); //得到一个Multipart,去读出附件            
            p.getBodyPart(0).getContent().toString();得到邮件的文本
                 
        //===========================================================================
原创粉丝点击