第四章 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();得到邮件的文本 //===========================================================================

评论