正文

javaWeb笔记(4)2008-04-01 19:59:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/ghlat520/33778.html

分享到:

第四章  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.*;          
              
              发送邮件的涉及到的类
               A:Properties类:
                  用来指定发信服务器,和使用发信服务器时是否需要身份验证:
                   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,"chengyu-qing@163.com,chengyu-qing@tom.com"); //设置收件人,可以同时指定多个收件人
     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[i].getSubject()//得到邮件的主题
            message[i].getSentDate().toLocaleString()//得到发信日期

            Multipart  p=(Multipart)message[i].getContent(); //得到一个Multipart,去读出附件           
            p.getBodyPart(0).getContent().toString();得到邮件的文本
                
        //===========================================================================

阅读(1617) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册