网络编程技术第十二周.ppt
《网络编程技术第十二周.ppt》由会员分享,可在线阅读,更多相关《网络编程技术第十二周.ppt(72页珍藏版)》请在三一办公上搜索。
1、第六次课 用Java收发E-Mail(2),用java收发E-Mail,一、复习,二、JavaMail API核心类简介,六、思考和作业,三、应用举例,五、Authenticator类的用法及其应用举例,四、问题解答,一、因特网电子邮件系统的组成,一、复习,1.用户代理user agent,又称为邮件阅读器,允许用户阅读、回复、转发、保存和撰写报文。俗称电子邮件客户端软件。常用的电子邮件客户端软件Foxmail,Outlook,Dreammail,KooMail,IncrediMail,Becky!,PocoMail,Thunderbird,The Bat!,Eudora,二、JavaMail
2、 API介绍,1、JavaMail API简介,JavaMail API是一个用于阅读、编写和发送电子邮件的可选包。功能:1.JavaMail API为Java程序开发者提供了一个访问邮件服务器的通用接口。2.用来创建邮件用户代理(Mail User Agent,MUA)类型程序,MUA类型的程序能让用户阅读和书写邮件。3.用JavaMail API编写的MUA程序依赖邮件传输代理(Mail Transfer Agent,MTA)处理实际消息传输。MTA:即通常的邮件服务器。,二、JavaMail API介绍,2、JavaMail API 分层体系,整个JavaMail体系可分为3层:抽象层I
3、nternet邮件实现层协议实现层JavaMail API包括:抽象层Internet邮件实现层,二、JavaMail API介绍,JavaMail API包含很多类和方法。其中核心类主要有SessionStoreFolderMessageAddressAuthenticator Transport可用这些类可以完成大量常见的电子邮件任务。这些类均位于javax.mail顶级包中。,3、JavaMail 核心类层次结构,邮件会话,存储空间,邮件夹,邮件详细信息,构造邮件地址,邮件身份验证,邮件发送出去,二、JavaMail API介绍,3、JavaMail 核心类层次结构,Sessionget
4、Store()getTransport(),Storeconnect()getFolder(),Transportsend()getFolder(),Folderopen()create()Deleteclose,Message,Address,邮件会话,存储空间,邮件夹,邮件详细信息,构造邮件地址,邮件发送出去,二、JavaMail API介绍,1.Session类Session类是JavaMail API的最高层入口类,它定义了一个基本邮件会话,是邮件系统的访问入口。所有其他类都是经由这个会话才得以生效。利用Session类可以在客户端与邮件服务器之间建立会话过程,进而访问邮箱、文件夹、邮
5、件;或者是利用SMTP Server发送邮件。,4、JavaMail 核心类功能介绍,二、JavaMail API介绍,1.Session类Session类的构造方法是私有的,不能被继承,也不能使用new语句来创建实例。但它提供了两个静态方法:getInstance()和getDefaultInstance()方法来获取Session实例。如:,4、JavaMail 核心类功能介绍,EmaiAuthenticator auth=new EmaiAuthenticator(“wangyexjzy,“126126);Properties props=System.getProperties();p
6、rops.put(mail.smtp.host,smtp);props.put(mail.smtp.auth,true);Session session=Session.getInstance(props,(Authenticator)auth);,二、JavaMail API介绍,2.Store类Store类表示接收邮件服务器上注册用户的存储空间,可以实现特定邮件协议上的读、写、监视、查找等操作。通过Store类可以访问Folder类(代表邮箱文件夹)。在使用类方法getFolder()获取一个Folder对象时,如果使用的是POP3协议,那么只能使用INBOX收件夹。如果使用的是IMAP协
7、议,则可使用自己定义的收件夹。,4、JavaMail 核心类功能介绍,二、JavaMail API介绍,3.Folder类Folder类实现邮箱中的文件管理。POP3邮箱中的INBOX收件夹。Folder可以容纳消息(Message)或子目录。这样就形成了一个树状分层体系。利用Folder类,可以处理上下级的文件夹,也可以处理邮件。Folder类处理邮件的功能特别强大。,4、JavaMail 核心类功能介绍,二、JavaMail API介绍,4.Message类Message类实现了邮件管理,利用Message类可读取邮件的详细信息,还可以设定邮件的状态,以及对邮件进行各种操作。Message
8、是一个抽象类,必须用其子类,如javax.mail.internet.MimeMessage。Message类对象是根据获得的Session对象来创建的,主要内容是要发送的消息。MimeMessage msg=new MimeMessage(session);MimeMessage是一个携带MIME类型和头的电子邮件消息。,4、JavaMail 核心类功能介绍,二、JavaMail API介绍,4.Message类MimeMessage msg=new MimeMessage(session);/创建Message对象msg.setFrom(new InternetAddress(from);
9、/设置发件人地址msg.addRecipient(Message.RecipientType.TO,new InternetAddress(to);/设置收件人地址msg.setSubject(“SendMail Test”);/设置邮件主题String s=Test Text;msg.setText(s);/创建邮件正文,4、JavaMail 核心类功能介绍,二、JavaMail API介绍,5.Transport类由服务者提供的类,实现用特定的协议发送消息或邮件。它是抽象类,工作与Session类相似,仅调用静态send()方法即可完成消息或邮件的发送。例如:Transport.send(
10、msg);也可以从针对自己的协议会话中获取一个特定的实例,传递用户名和密码,发送消息,关闭连接。Transport transport=session.getTransport(smtp);transport.connect(smtp,“,“126126);transport.sendMessage(msg,msg.getAllRecipients();transport.close();,4、JavaMail 核心类功能介绍,二、JavaMail API介绍,6.Address类Address主要用来确定邮件的地址。Address类也是一个抽象类,实际编程中经常使用的是类。Address有两
11、种常用的构造方法:Address address=new InternetAddress(“”);/用电子邮件地址创建Address adderss=new InternetAddress(“”,”Tom”);/用电子邮件地址和用户设置的名字创建,4、JavaMail 核心类功能介绍,二、JavaMail API介绍,7.Authenticator类JavaMail API利用Authenticator通过用户名和密码访问受保护的资源。Authenticator 为抽象类。要使用Authenticator,需先创建抽象类的子类,并从getPasswordAuthentication()方法中返
12、回PasswordAuthentication实例。创建完成后,还必须向Session类注册Authenticator。然后,在需要认证的时候,就会通知Authenticator。,4、JavaMail 核心类功能介绍,三、应用举例,设置mail.host属性,指向本地服务器 利用session.getInstance()启动邮件会话创建MimeMessage邮件对象设置收件人、发件人、邮件主题、邮件内容利用Transport.send()方法发送邮件,1、JavaMail 编程基本步骤,三、应用举例,例题-1安装一个本地邮件服务器,利用JavaMail API编程从邮箱发送email到邮箱。
13、准备工作配置本地邮件服务器merak,,安装过程按照默认的步骤安装即可安装到最后的步骤时,需要Hostname,Domain,Username和Password,填入如下信息:,2、例题,三、应用举例,例题-1:设计思路,2、例题,数据成员,init()方法,sendMessage()方法,createSimpleMessage()方法,main()方法,protected Session session;/邮件会话private String sendHost=localhost;/邮件服务器主机名private String sendProtocol=smtp;/发送邮件协议private
14、 String toAddr=;/收件人地址private String fromAddr=;/发件人地址,数据成员,三、应用举例,例题-1设计思路,2、例题,数据成员,init()方法,sendMessage()方法,createSimpleMessage()方法,main()方法,public void init()throws Exception/根据配置的JavaMail属性生成邮件会话session对象Properties props=new Properties();/配置JavaMail属性props.put(,sendProtocol);/指定邮件发送协议props.put(,
15、com.sun.mail.smtp.SMTPTransport);/指定支持SMTP协议的Transport具体类,由第三方支持props.put(,sendHost);/指定采用SMTP协议的邮件发送服务器的IP地址或者主机名session=Session.getDefaultInstance(props);/创建Session实例session.setDebug(true);/输出日志。,init()方法,三、应用举例,例题-1设计思路:需要设置的JavaMail属性:指定邮件发送协议:指定邮件接收协议:指定支持SMTP协议的Transport具体类,允许由第三方提供:指定支持IMAP协议
16、的Store具体类,允许由第三方提供:指定采用SMTP协议的邮件发送服务器的IP地址或者主机名,2、例题,三、应用举例,例题-1设计思路,2、例题,数据成员,init()方法,sendMessage()方法,createSimpleMessage()方法,main()方法,public Message createSimpleMessage(String fromAddr,String toAddr)throws ExceptionMessage msg=new MimeMessage(session);/根据session对象创建Message对象InternetAddress toAddr
17、s=InternetAddress.parse(toAddr,false);msg.setRecipients(Message.RecipientType.TO,toAddrs);/邮件接收者地址msg.setSentDate(new Date();/日期msg.setSubject(“Hello!”);/主题msg.setFrom(new InternetAddress(fromAddr);/设置发件人地址msg.setText(How are you?!);/正文return msg;,createSimpleMessage()方法,三、应用举例,例题-1设计思路,2、例题,数据成员,in
18、it()方法,sendMessage()方法,createSimpleMessage()方法,main()方法,public void sendMessage(String fromAddr,String toAddr)throws Exception/发送邮件方法Message msg=createSimpleMessage(fromAddr,toAddr);Transport.send(msg);,sendMessage()方法,三、应用举例,例题-1设计思路,2、例题,数据成员,init()方法,sendMessage()方法,createSimpleMessage()方法,main()
19、方法,public static void main(String args)throws ExceptionMailSendClientToMyDomain client=new MailSendClientToMyDomain();client.init();client.sendMessage(client.fromAddr,client.toAddr);,main()方法,三、应用举例,例题-1控制台输出的debug信息,二、例题,三、应用举例,例题-2利用JavaMail API编制程序,读取邮箱收件箱中的所有邮件。,二、例题,三、应用举例,例题-2利用JavaMail API编制程
20、序,读取邮箱收件箱中的所有邮件。,2、例题,三、应用举例,例题-2:设计思路,2、例题,数据成员,init()方法,receiveMessage(),main()方法,browseMessagesFromFolder(String folderName),browseMessagesFromFolder(Folder folder),数据成员,protected Session session;/邮件会话protected Store store;/store对象private String receiveHost=localhost;/接收邮件服务器的主机名private String re
21、ceiveProtocol=imap;/接收邮件协议private String username=admin;/邮件用户名private String password=1234;/邮件密码private String toAddr=;/邮件地址,三、应用举例,例题-2:设计思路,2、例题,数据成员,init()方法,receiveMessage(),main()方法,browseMessagesFromFolder(String folderName),browseMessagesFromFolder(Folder folder),public void init()throws Exce
22、ption/设置JavaMail属性,并创建sessionProperties props=new Properties();props.put(,receiveProtocol);props.put(mail.imap.class,com.sun.mail.imap.IMAPStore);session=Session.getDefaultInstance(props);store=session.getStore(receiveProtocol);/接收邮件服务器上注册用户的存储空间,参数为接收邮件协议imapstore.connect(receiveHost,username,passw
23、ord);/连接到接收邮件服务器,init()方法,三、应用举例,例题-2:设计思路,2、例题,数据成员,init()方法,receiveMessage(),main()方法,browseMessagesFromFolder(String folderName),browseMessagesFromFolder(Folder folder),public void browseMessagesFromFolder(Folder folder)throws Exception folder.open(Folder.READ_ONLY);/打开邮件夹System.out.println(folde
24、r.getMessageCount()+messages in inbox!);/获得邮件数目System.out.println(folder.getUnreadMessageCount()+unread messages in inbox!);/未读邮件数目Message messages=folder.getMessages();/从邮件夹中取出邮件存于数组messages中for(int i=1;i=messages.length;i+)System.out.println(-第+i+封邮件);folder.getMessage(i).writeTo(System.out);Syste
25、m.out.println();folder.close(false);,browseMessagesFromFolder(Folder folder),三、应用举例,例题-2:设计思路,2、例题,数据成员,init()方法,receiveMessage(),main()方法,browseMessagesFromFolder(String folderName),browseMessagesFromFolder(Folder folder),public void browseMessagesFromFolder(Folder folder)throws Exception folder.op
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网络 编程 技术 第十二
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-6056818.html